$elemMatch 不适用于新的 mongodb 2.2 吗?

Eri*_*rik 5 mongoose mongodb node.js express

在 MongoDB 的新版本中,我们可以使用 $elemMatch 投影运算符将查询的响应限制为数组的单个匹配元素。http://docs.mongodb.org/manual/reference/projection/elemMatch/

但它似乎在 mongoose 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) {

});
Run Code Online (Sandbox Code Playgroud)

我预计会得到以下文档:

{
 _id: ObjectId(5), 
 items: [1,67,9]
}
Run Code Online (Sandbox Code Playgroud)

但不幸的是我得到的是包含所有项目的文档:

{
 _id: ObjectId(5), 
 items: [1,2,3,45,4,67,9,4]
}
Run Code Online (Sandbox Code Playgroud)

aar*_*ann 4

这里的 mongodb 文档具有误导性,我们将对其进行更新。

它的意思是,您现在可以在投影中使用 $elemMatch,即您的字段选择:

https://gist.github.com/3640687

另请参阅: https: //github.com/learnboost/mongoose/issues/1085

[编辑]发送文档的拉取请求:https://github.com/mongodb/docs/pull/185