在mongodb的新版本中,我们可以使用$elemmatch投影运算符将查询的响应限制为数组的单个匹配元素。http://docs.mongodb.org/manual/reference/projection/elemMatch/
但在猫鼬3中似乎还不起作用,下面是一个例子:

{
 _id: ObjectId(5),
 items: [1,2,3,45,4,67,9,4]
}

Folder.findOne({_id: Object(5)}, {$elemMatch: {$in: [1,67,9]}})
  .exec(function (err, doc) {

});

我需要得到以下医生:
{
 _id: ObjectId(5),
 items: [1,67,9]
}

但不幸的是,我得到的是包含所有项目的文档:
{
 _id: ObjectId(5),
 items: [1,2,3,45,4,67,9,4]
}

最佳答案

这里的MongoDB文档有误导性,我们会更新的。
它的意思是,您现在可以在投影中使用$elemmatch,也就是您的字段选择:
https://gist.github.com/3640687
另请参见:https://github.com/learnboost/mongoose/issues/1085
[编辑]对已发送文档的拉取请求:https://github.com/mongodb/docs/pull/185

07-28 08:54