MongoDB的 – 如何search一个值嵌套数组?

我试图做一个查询,使用MongoDB将值search到许多子数组。 数据库模式如下所示:

user: [ { name: "SomeName", dvd: [ { collectionName: "ActionDVDs", movies: [ { _id: ObjectId(X), mark: 10 }, { _id: ObjectId(Y), mark: 8 } } ] } ... ] 

我知道三个信息:user.name,dvd.collectioName,movies._id。

例如,我想知道是否有任何名为“SomeName”的用户,将具有ObjectId(X)的电影放入名为“ActionDVDs”的DVD集合中。

我已经试过这个查询:

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

任何想法 ?

这应该做到这一点,你需要embedded在dvd movies检查,否则将匹配任何电影集合内的电影;

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

我想这会给你一个线索:

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