Node.js MongoDB-如何在嵌套数组中搜索值?

Node.js MongoDB-如何在嵌套数组中搜索值?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在尝试使用MongoDB将一个值搜索到多个子数组中。 db模式如下所示: user: [ { name: "SomeName", dvd: [ { collectionName: "ActionDVDs", movies: [ { _id: ObjectId(X), mark: 10 }, { _id: ObjectId(Y),

我正在尝试使用MongoDB将一个值搜索到多个子数组中。 db模式如下所示:

user:
[
{ 
 name: "SomeName",
 dvd: [
     {
       collectionName: "ActionDVDs",
       movies: [ 
       { 
         _id: ObjectId(X),
         mark: 10
       },
       { 
         _id: ObjectId(Y),
         mark: 8
       }
     }  
  ]
}
...
]
我知道三个信息:user.name、dvd.collectioName、movies.\u id

例如,我试图知道是否有名为“SomeName”的用户,在名为“ActionDVD”的dvd集合中有一部带有ObjectId(X)的电影

我已经尝试过这个查询:

user.findOne(
{
  $and:  [
    {name: "SomeName"},
    {dvd : {
         $elemeMatch: { name: "ActionDVDs" }
    },
    {movies: {
         $elemMatch: { _id: ObjectId(X) }
    }
  ]
})

有什么想法吗

我想这会给你一个线索:

user.find({
  name: "SomeName",
  "dvd.name": "ActionDVDs",
  "dvd.movies._id": ObjectId(X)
})

这应该可以做到,您需要将
电影
的检查嵌套在
dvd
中,否则它将匹配任何电影收藏中的电影

db.user.findOne(
    {'name':'SomeName', 
     'dvd': {$elemMatch: {'collectionName':'ActionDVDs', 
                          'movies': {$elemMatch: { '_id': ObjectId('X')}}}}})