我使用meteor bundle开发了一个meteor应用程序.我想在mongo文档数组中重新定位一个项目.为了实现这一点,我将其从数组中取出,然后根据mongoDB documentation将其放置在特定的index位置.

MyCollection.update({_id: my_doc.id},
        {
          $push:
          {
            my_array:
            {
              $each:[my_item.id],
              $position:index
            }
          }
        }
      )

Meteor/Mongo抛出以下错误:

更新失败:MongoError:无法规范化查询:BadValue未知

我首先实现了这个客户端.我以为它不起作用是因为minimongo的限制.

我写了一个方法来处理这个服务器端,但最终还是出现了同样的错误.

这个请求有什么问题,meteor能处理每个操作员的美元吗?


EDIT:我试着直接把它插入robomongo,结果成功了.Mongo版本,键入db.version()时返回2.6.7


*EDIT2:我没想到会这样,所以我之前没有判断:$pull$push的更新都有效.然而,即使数据真的被更新了,我仍然会得到错误.


*编辑:以下是一些示例数据:

{
    "_id" : "oSNrpgAAu8BuznvD6",
    "name" : "tynhjderjye",
    "description" : "",
    "notes" : "",
    "display_notes" : false,
    "keywords" : [
        ""
    ],
    "owner" : "mA5Y7LBCoRyeSDkaG",
    "createdAt" : ISODate("2015-10-27T13:59:06.083Z"),
    "createdBy" : "C3i9oj4eapyttHZj6",
    "contributors" : [
        "C3i9oj4eapyttHZj6"
    ],
    "medias" : [
        "TcFqermNY4y5cjBG3",
        "dbkNN2rxXJXth8urw",
        "jML4JKkRoKxx8sLwu",
        "LEWYsnPrXRSH6MPkX"
    ],
    "modifiedAt" : ISODate("2015-11-17T09:35:50.303Z"),
    "modifiedBy" : "C3i9oj4eapyttHZj6",
    "chunks" : [
        "qCCHKJDbdTLEFR5Yt",
        "ySiM7dcxvduEM2npj",
        "5q46vqrmYttscitiK"
    ],
    "trashed" : ISODate("2015-11-17T09:35:50.303Z")
}

chunks是数组my_array,我在index位置 pull 和推动my_item.id

推荐答案

如果你用new Mongo.Collection('col')创建一个Meteor集合,你会得到一个Minimongo实例,它不是本机 node MongoDriver,对吗?

所以有些方法就是不起作用或者没有得到充分的支持..大约collection.aggregate

但您可以通过Col.rawCollection()轻松访问本机驱动程序,并直接在本机实例上执行查询.The native instance is only accessible on the server, of course

所以,要想做你想做的事情,你有几种方法,例如,你可以先使用数组,然后按照你的意愿使用它,然后

$set: {my_array: sortedArray }

但如果你想用$push at$position的方式..只需使用本机驱动程序即可

var col = Collection.rawCollection();
var result = Meteor.wrapAsync(col.update.bind(col)(
  /* update query goes here */
);

Note: You need the Meteor.wrapAsync because of Meteor sync style, you could also do it with out it. Collection.rawCollection().update(...)

Mongodb相关问答推荐

如何在MongoDB中查找和过滤嵌套数组

如何在MongoDB中对两个数组进行分组?

联接不返回具有ObjectId和非ObjectId的结果

使用 Node.js 通过 SSL 连接到 MongoDB

如何使用 Spring Data MongoDB 通过 GridFS ObjectId 获取二进制流

Mongodb插入没有_id字段的文档

你如何让 mongo 在远程服务器上运行?

如何在 MongoDB 集合中查找与给定条件匹配的文档和单个子文档

mongod 和 mongo 命令在 Windows 10 上不起作用

在 GridFS、express、mongoDB、node.js 中存储来自 POST 请求的数据流

为什么 PyMongo 会抛出 AutoReconnect?

Node + Mongoose:获取最后插入的 ID?

Mongoose.js:嵌套属性的原子更新?

Ruby 按键值分组哈希

在安装的 MongoDB homebrew 中设置 dbpath (Mac OS)

如何在 Meteor 应用程序之间共享 MongoDB 集合?

Mongo聚合框架,排序然后分组不起作用

在 MongoDB 中快速搜索数十亿个小文档的策略

判断字段是否存在于数组的子文档中

停止副本集 MongoDB