我正在尝试使用mongodb做一个查询,将一个值搜索到许多子数组中。
数据库架构如下所示:

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

我知道三个信息:用户名、DVD、收藏、电影。
例如,我试图知道是否有一个名为“somename”的用户,在名为“actiondvds”的dvd集合中有一个objectid(x)为的电影。
我已经尝试过这个查询:
user.findOne(
{
  $and:  [
    {name: "SomeName"},
    {dvd : {
         $elemeMatch: { name: "ActionDVDs" }
    },
    {movies: {
         $elemMatch: { _id: ObjectId(X) }
    }
  ]
})

知道吗?

最佳答案

这样做,您需要在movies内嵌套dvd检查,否则它将匹配任何电影集合内的电影;

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

关于node.js - MongoDB - 如何将值搜索到嵌套数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18128074/

10-12 05:48