查找具有与两个(或更多)属性匹配的子文档的文档

在与mongoose的节点我想在集合Contentfind一个对象。 它有一个名为users的子文件列表,它具有属性streamuseradded 。 我这样做是为了在users.user字段中获取具有某个用户的_id属性的所有文档。

 Content.find( { 'users.user': user._id } ).sort( { 'users.added': -1 } ) 

这似乎工作(虽然我不确定.sort是否真的在这里工作,但是,我想匹配两个字段,如:

 Content.find( { 'users.user': user._id, 'users.stream': stream } } ).sort( { 'users.added': -1 } ) 

这似乎并不奏效。 什么是正确的方法来做到这一点?


这是一个示例文档

 { "_id" : ObjectId("551c6b37859e51fb9e9fde83"), "url" : "https://www.youtube.com/watch?v=f9v_XN7Wxh8", "title" : "Playing Games in 360°", "date" : "2015-03-10T00:19:53.000Z", "author" : "Econael", "description" : "Blinky is a proof of concept of enhanced peripheral vision in video games, showcasing different kinds of lens projections in Quake (a mod of Fisheye Quake, using the TyrQuake engine).\n\nDemo and additional info here:\nhttps://github.com/shaunlebron/blinky\n\nThanks to @shaunlebron for making this very interesting proof of concept!\n\nSubscribe: http://www.youtube.com/subscription_center?add_user=econaelgaming\nTwitter: https://twitter.com/EconaelGaming", "duration" : 442, "likes" : 516, "dislikes" : 13, "views" : 65568, "users" : [ { "user" : "54f6688c55407c0300b883f2", "added" : 1427925815190, "_id" : ObjectId("551c6b37859e51fb9e9fde84"), "tags" : [] } ], "images" : [ { "hash" : "1ab544648d7dff6e15826cda7a170ddb", "thumb" : "...", "orig" : "..." } ], "tags" : [], "__v" : 0 } 

使用$ elemMatch操作符在embedded式文档的数组上指定多个条件:

 Content.find({"users": {$elemMatch: {"user": user.id, "stream": stream}}});