我有以下架构(没有_id) -
{uid: String,
inbox:[{msgid:String, someval:String}]
}
现在,在请求中我得到了 msgid,并在下面的 Mongoose 查询中使用它,如下所示 -
my_model.findOne({'inbox.msgid':'msgidvaluexyz'}
, function(err, doc) {
console.log(doc);
return !0; })
现在,问题是我得到了整个文档,其中包含特定消息以及收件箱中的其他消息 -
Output-
{uid:'xyz',
inbox:[
{msgid:,someval},
{msgid:'our queried msgid',someval}, //required sub array
{msgid:,someval},
]
}
现在,当文档收件箱太大而无法循环时,我可以使用什么查询来获取特定的子数组。
最佳答案
使用$
positional selection operator让返回的文档仅包含匹配的 inbox
元素:
my_model.findOne({'inbox.msgid':'msgidvaluexyz'}
, {'inbox.$': 1}
, function(err, doc) {
console.log(doc);
return !0; })
关于javascript - 通过 mongoose 更新 mongodb 内嵌套数组中的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15827207/