Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何更新文档中的Meteor数组元素_Mongodb_Meteor - Fatal编程技术网

Mongodb 如何更新文档中的Meteor数组元素

Mongodb 如何更新文档中的Meteor数组元素,mongodb,meteor,Mongodb,Meteor,我有一个Meteor Mongo文档,如下所示 { "_id" : "zFndWBZTvZPgSKXHP", "activityId" : "aRDABihAYFoAW7jbC", "activityTitle" : "Test Mongo Document", "users" : [ { "id" : "b1@gmail.com", "type" : "free" },

我有一个Meteor Mongo文档,如下所示

{
    "_id" : "zFndWBZTvZPgSKXHP",
    "activityId" : "aRDABihAYFoAW7jbC",
    "activityTitle" : "Test Mongo Document",
    "users" : [
        {
            "id" : "b1@gmail.com",
            "type" : "free"
        },
                {
            "id" : "JqKvymryNaCjjKrAR",
            "type" : "free"
        },
    ],
}
我想使用Meteor查询,使用自定义生成的id更新特定数组元素的电子邮件,如下所示

例如,我想更新文档 如果
'users.id'='b1@gmail.com“
然后将其更新为
users.id='SomeIDXXX'

所以更新后的文档应该如下所示

{
    "_id" : "zFndWBZTvZPgSKXHP",
    "activityId" : "aRDABihAYFoAW7jbC",
    "activityTitle" : "Test Mongo Document",
    "users" : [
        {
            "id" : "SomeIDXXX",
            "type" : "free"
        },
        {
            "id" : "JqKvymryNaCjjKrAR",
            "type" : "free"
        },

    ],
}
我试过下面的方法,但没用

 Divisions.update(
      { activityId: activityId, "users.id": emailId },
      { $set: { "users": { id: _id } } }
    );
有人能帮我查询一下流星吗?谢谢

您需要使用而不是$set

{$push:{:,…}

您需要使用而不是$set


{$push:{:,…}}

您的查询实际上几乎是正确的,只是有一小部分我们希望通过其索引标识要更新的元素

Divisions.update({
"activityId": "aRDABihAYFoAW7jbC",
 "users.id": "b1@gmail.com"
}, {
$set: {"users.$.id": "b2@gmail.com"}
})

您的查询实际上几乎是正确的,只是有一小部分我们希望通过其索引标识要更新的元素

Divisions.update({
"activityId": "aRDABihAYFoAW7jbC",
 "users.id": "b1@gmail.com"
}, {
$set: {"users.$.id": "b2@gmail.com"}
})

您可能需要arrayFilters选项

Divisions.update(
  { activityId: activityId },
  { $set: { "users.$[elem].id": "SomeIDXXX" } },
  { arrayFilters: [ { "elem.id": "b1@gmail.com" } ], multi: true }
);

您可能需要arrayFilters选项

Divisions.update(
  { activityId: activityId },
  { $set: { "users.$[elem].id": "SomeIDXXX" } },
  { arrayFilters: [ { "elem.id": "b1@gmail.com" } ], multi: true }
);

这将向数组中添加一个新对象。Syam询问如何更新数组中的现有对象。是的@BartS说的是对的。我想更新现有元素。这将向数组中添加一个新对象。Syam询问如何更新数组中的现有对象。是的@BartS说的是对的。我想更新现有的元素。