gpt4 book ai didi

mongodb - 使用另一个字段的值查找 MongoDB 对象

转载 作者:行者123 更新时间:2023-12-05 01:20:04 26 4
gpt4 key购买 nike

我最近发现很难找到存储在文档中且其键位于同一文档的另一个字段中的对象。

{
list : {
"red" : 397n8,
"blue" : j3847,
"pink" : 8nc48,
"green" : 983c4,
},
result : [
{ "id" : 397n8, value : "anger" },
{ "id" : j3847, value : "water" },
{ "id" : 8nc48, value : "girl" },
{ "id" : 983c4, value : "evil" }
]
}
}

我正在尝试获取 ID 为“j3847”且值为“water”的“blue”的值。

db.docs.find( { result.id : list.blue }, { result.value : 1 } );

# list.blue would return water
# list.pink would return girl
# list.green would return evil

我尝试了很多东西,甚至找到了一篇关于如何使用同一文档中的值更新值的好文章。:Update MongoDB field using value of another field我以此为基础;没有成功...:/

如何使用另一个字段的值找到 MongoDB 对象?

最佳答案

您可以使用 $filter 来做到这一点mongo 聚合中的运算符。它返回一个仅包含符合条件的元素的数组:

db.docs.aggregate([
{
$project: {
result: {
$filter: {
input: "$result",
as:"item",
cond: { $eq: ["$list.blue", "$$item.id"]}
}
}
}
}
])

此查询的输出如下所示:

{ 
"_id" : ObjectId("569415c8299692ceedf86573"),
"result" : [ { "id" : "j3847", "value" : "water" } ]
}

关于mongodb - 使用另一个字段的值查找 MongoDB 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34730511/

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