【发布时间】:2017-01-13 08:23:17
【问题描述】:
我有以下 JSON:
{
"_id" : ObjectId("57ce1a55899bf934e59edd0d"),
"project_name" : "Coupletones",
"list_users" : [
"testmail"
],
"iterations" : [
{
"iteration_name" : "Iteration1",
"tasks" : [ ]
},
{
"iteration_name" : "Iteration2",
"tasks" : [ ]
},
]
}
我希望能够将内容推送到与迭代 2 关联的任务数组中。如何正确查询并插入到正确的位置?这是我目前所拥有的,但它总是插入到与迭代 1 关联的任务数组中。
var ans = collection_projects.update({
"project_name" : project_name,
"list_users" : email,
"iterations.iteration_name": iteration_name,
},
{$addToSet: {"iterations.$.tasks": {
task_name: task_name,
task_description : task_description,
task_assignee: task_assignee,
task_status : -1 } } }
);
我看过这个: MongoDB nested array query 但他只是试图推送到一个嵌套数组。
【问题讨论】:
-
positional update operator 更新它在数组中找到的第一个元素,正如Shumi Gupta 所回答的那样,您需要在查找/条件中包含要更新的元素。一个重要的通知,位置更新更新第一个且仅第一个元素。如果您需要更新数组中的多个元素,则(此时)需要在客户端进行。这个愿望有一张 JIRA 票