我在确定如何在集合中查找文档以及在该文档的子数组中的对象内的值时遇到一些问题 - 然后更新该数组中对象内的值。
我需要做以下事情:
按_id
在评级数组中查找与用户+帖子键匹配的对象
更新该对象中的报告值
例如,我的收藏中的文档设置如下。
{
"_id" : "mz32AcxhgBLoviRWs",
"ratings" : [
{
"user" : "mz32AcxhgBLoviRWs",
"post" : "SMbR6s6SaSfsFn5Bv",
"postTitle" : "fdsfasdf",
"date" : "2017-09-27",
"rating" : "4",
"review" : "sdfa",
"report" : "a report"
},
{
"user" : "mz32AcxhgBLoviRWs",
"post" : "iZbjMCFR3cDNMo57W",
"postTitle" : "today",
"date" : "2017-09-27",
"rating" : "4",
"review" : "sdfa",
"report" : "some report"
}
]
}
答案 0 :(得分:2)
您似乎只想要一个update
,而不是三个独立的查询。
Collection.update({
_id: <id>,
ratings: {
$elemMatch: {
user: <user>,
post: <post>
}
}
}, {
$set: {
'ratings.$.report': <report>
}
});
文档:$elemMatch
,<array>.$
。