我正在尝试使用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/