【发布时间】:2015-08-02 09:37:41
【问题描述】:
我收集了这样的文档:
{
_id : "abcd",
name : "Tom",
myArray : [
{
field1 : "",
field2 : ""
}
]
},
{
_id : "efgh",
name : "Jerry"
}
我有一个myArray 的新对象。我想写一个查询来只更新一个文档。
如果查询匹配带有_id : "abcd"的文档,则将新对象推入myArray字段:
{
_id : "abcd",
name : "Tom",
myArray : [
{
field1 : "",
field2 : ""
},
{
// new object
}
]
}
如果查询与_id : "efgh" 匹配,则创建字段myArray,其中包含新对象:
{
_id : "efgh",
name : "Jerry"
myArray : [
{
// new object
}
]
}
我怎样才能做到这一点?
【问题讨论】:
-
你想做什么?将“efgh”中的“myArray”设置为与“abcd”相同的内容?或者你想将一个新的数组项推送到“abcd”和“efgh”?您的问题上有一个Edit 链接,您可以在其中添加详细信息以明确您的意图。
-
@BlakesSeven ,修改问题希望你理解...
-
仍然不清楚这里的“elseif”是什么意思。您是要更新“两个”文档,还是只选择更新“一个”文档?
-
不,我不想同时更新这两个文档。一次只更新一个文档。
-
你在这里尝试过什么吗?我猜不是因为你会看到当你
$push一个数组到一个不存在的文档时会发生什么,而是它只是创建了数组。如果存在现有数组,则会附加新文档。因此,要么您根本没有尝试过,要么您的问题中仍然缺少一些关于您真正想做的事情。
标签: mongodb mongodb-query