gpt4 book ai didi

mongodb - 使用数组源获取 mongodb 中的数组子集

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

我有这个文件的结构:

{
Id: "id_value",
Elements:[
{
InnerId: "inner_id_value1",
Value: "apple"
},
{
InnerId: "inner_id_value2",
Value: "pear"
},
{
InnerId: "inner_id_value3",
Value: "banana"
}
]
}

我需要做的是创建一个查询,它在输入中接收一个数组(例如 ["apple","banana","coconut"] )并返回给我:

{
Id: "id_value",
Elements:[
{
InnerId: "inner_id_value1",
Value: "apple"
},
{
InnerId: "inner_id_value3",
Value: "banana"
}
]
}

是否可以通过单个查询在 Mongo 中完成?

最佳答案

您只需$filter 数组并仅保留那些 是输入数组子集的子文档。请注意,这里的 value 是一个元素数组,其中元素是嵌入字段 value

let fruits = ["apple","banana","coconut"];

db.collection.aggregate([
{ "$project": {
"Element": {
"$filter": {
"input": "$Element",
"as": "el",
"cond": {
"$setIsSubset": [ [ "$$el.Value" ], fruits ]
}
}
}
}}
])

从 MongoDB 3.4* 开始,您可以在 $project 阶段使用 $in 运算符。

db.collection.aggregate([
{ "$project": {
"Element": {
"$filter": {
"input": "$Element",
"as": "el",
"cond": {
"$in": [ "$$el.Value", fruits ]
}
}
}
}}
])

*截至撰写本文时 MongoDB 的未发布版本

关于mongodb - 使用数组源获取 mongodb 中的数组子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39774492/

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