Javascript 将字段插入子文档数组中。意外行为

Javascript 将字段插入子文档数组中。意外行为,javascript,mongodb,mongodb-query,Javascript,Mongodb,Mongodb Query,我试图在每个子文档数组中的每个子文档中插入一个新字段。我有一个半工作脚本,预期结果是插入每个子文档的序号,但它似乎插入到集合中每个注释数组的第一个子文档中 db.posts.find({ "comments.ordinal_number":{"$exists":true}}).forEach(function(data){ for(var i = 0; i < data.comments.length; i++) { db.posts.update( {

我试图在每个子文档数组中的每个子文档中插入一个新字段。我有一个半工作脚本,预期结果是插入每个子文档的
序号
,但它似乎插入到集合中每个
注释
数组的第一个子文档中

db.posts.find({
"comments.ordinal_number":{"$exists":true}}).forEach(function(data){
   for(var i = 0; i < data.comments.length; i++) {
     db.posts.update(
    { 
         "_id": data._id, 
         "comments.body": data.comments[i].body
     },
     {
         "$set": {
           "comments.$.ordinal_number":
               1
         }
     },true,true
    );
  }
});

您还需要循环光标和数组条目,然后使用操作符使用操作更新数组中的每个子文档,以获得最大效率

var bulk=db.posts.initializeOrderedBulkOp();
var计数=0;
db.posts.find().forEach(函数(doc){
var nComments=doc.comments.length;
对于(变量i=0;i0)bulk.execute();
请注意,批量API在2.6中是新的,因此如果您使用的是旧版本,则需要使用该方法

db.posts.find().forEach(函数(doc){
var nComments=doc.comments.length;
对于(变量i=0;i
您还需要循环光标和数组条目,然后使用操作符使用操作更新数组中的每个子文档,以获得最大效率

var bulk=db.posts.initializeOrderedBulkOp();
var计数=0;
db.posts.find().forEach(函数(doc){
var nComments=doc.comments.length;
对于(变量i=0;i0)bulk.execute();
请注意,批量API在2.6中是新的,因此如果您使用的是旧版本,则需要使用该方法

db.posts.find().forEach(函数(doc){
var nComments=doc.comments.length;
对于(变量i=0;i
@user3100115我想添加一个实际的新字段,而不是更新字段的值。@user3100115我想添加一个实际的新字段,而不是更新字段的值。
    "link" : "cxzdzjkztkqraoqlgcru",
        "author" : "machine",
        "title" : "arbitrary title",
        "comments" : [
            {
                "body" : "...",
                "email" : "ZoROirXN@thUNmWmY.com",
                "author" : "Foo bar",
                "ordinal_number" : 1
            },
            {
                "body" : "...",
                "email" : "eAYtQPfz@kVZCJnev.com",
                "author" : "Foo baz"
            }
]