gpt4 book ai didi

node.js - MongoDB - 如何将值搜索到嵌套数组中?

转载 作者:可可西里 更新时间:2023-11-01 09:57:26 24 4
gpt4 key购买 nike

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

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) }
}
]
})

有什么想法吗?

最佳答案

这应该可以做到,您需要将对 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com