gpt4 book ai didi

mongodb - 在嵌套数组中提取 MongoDb 中的特定元素

转载 作者:可可西里 更新时间:2023-11-01 10:16:36 26 4
gpt4 key购买 nike

{
"_id" : 123,
"someKey" : "someValue",
"someArray" : [
{
"name" : "name1",
"someNestedArray" : [
{
"name" : "value_1",
"fame" : [
{
"goal" : "goal_1"
}
]
},
{
"name" : "value_2",
"fame" : [
{
"goal" : "goal_2"
}
]
}
]
}
]
}

我这样查询:

db.getCollection('city').find({"someArray.0.someNestedArray.1.fame.0.goal":"goal_2"},{"someArray.0.someNestedArray.":1})

但是得到的输出是:

{
"_id" : 123,
"someArray" : [
{}
]
}

获取输出的查询是什么:

{
"fame" : [
{
"goal" : "goal_2"
}
]
}

提前致谢。还说明了在不知道索引的情况下如何在嵌套数组中查找值。我做的查询指定数组元素位置(someArray.0.someNestedArray.1.fame.0.goal)

最佳答案

您可以只使用以下查询:

db.test.find(
{'someArray.someNestedArray.fame.goal':'goal_1'},
{"someArray.someNestedArray.fame.goal":1,"_id":0}
)

你会得到文档:

{
"someArray" : [
{
"someNestedArray" : [
{
"fame" : [
{
"goal" : "goal_1"
}
]
},
{
"fame" : [
{
"goal" : "goal_2"
}
]
}
]
}
]
}

您也可以尝试使用 $elemMatch

The $elemMatch operator matches documents that contain an array field with at least one element that matches all the specified query criteria.

db.test.find(
{
'someArray':{
$elemMatch:{
'someNestedArray':{
$elemMatch:{
'fame':{ $elemMatch: {"goal" : "goal_2" } }
}
}
}
}
},{"someArray.someNestedArray.fame.goal":1}
);

你可以尝试使用$unwind$replaceroot返回子文档,并使用新的 $filter用于在投影期间过滤数组的聚合运算符。

希望这对您有所帮助。

关于mongodb - 在嵌套数组中提取 MongoDb 中的特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42176046/

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