gpt4 book ai didi

MongoDB $and 查询单个嵌入文档中的多个字段和值

转载 作者:IT老高 更新时间:2023-10-28 13:26:14 25 4
gpt4 key购买 nike

我正在寻找一种方法来查询这样的集合:

[{ 
name: "Parent 1",
items: [
{ name: "Child 1", age: "60" },
{ name: "Child at heart", age: "27" }
]
},

{
name: "Parent 2",
items: [
{ name: "Child 3", age: "10" },
{ name: "Child 4", age: "15" },
{ name: "Child at heart", age: "60" }
]
}
]

使用这样的查询:

db.collection.find( 'items.name' => "Child at heart", 'items.age' => "60" )

并获得名称为“Parent 2”的对象的结果。也就是说,我想查询包含嵌入项目的文档,该嵌入项目 both 名称为“Child at heart”, 年龄为“60 "在相同的嵌入文档中。相反,此查询返回两个文档,“Parent 1”和“Parent 2”。

如何在同一个嵌入文档的不同字段上使用 $and 条件进行查询?

谢谢。

最佳答案

这里的问题是 $and 接受每个条件,将其应用于所有嵌入文档,如果任何嵌入文档匹配,则将文档视为满足条件。它与条件无关。

你想要的操作符是$elemMatch。它执行您正在寻找的相关性。这是正确的查询:

db.collection.find({items: {$elemMatch: {name: 'Child at heart', age: '60'} }})

items 是您要搜索的数组的名称。

对样本数据的查询输出:

{
"_id" : ObjectId("51a012f0ac3dfe4f0c05ca89"),
"name" : "Parent 2",
"items" : [
{
"name" : "Child 3",
"age" : "10"
},
{
"name" : "Child 4",
"age" : "15"
},
{
"name" : "Child at heart",
"age" : "60"
}
]
}

关于MongoDB $and 查询单个嵌入文档中的多个字段和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16742914/

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