我有点以下模式(不带_id)-
{uid: String,
inbox:[{msgid:String, someval:String}]
}
现在,在请求中我得到了msgid,并在下面的猫鼬查询中使用了它-
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; })