假設我有以下這些檔案:
[
{
array : ['a', 'b' , 'c'],
},
{
array : ['b', 'd' , 'e'],
},
{
array : ['d', 'e' , 'f'],
},
]
和輸入陣列進行查詢:
["b","d","e","f"]
預期輸出:
['b', 'd' , 'e'],['d', 'e' , 'f']
我可以使用哪個查詢來做到這一點?以及如何過濾哪個元素不在檔案中?
預期結果:
[
{
array : ['b', 'd' , 'e'],
missingElement : ['f']
},
{
array : ['d', 'e' , 'f'],
missingElement : ['b']
},
]
uj5u.com熱心網友回復:
$expr- 允許使用聚合運算子。1.1。
$eq- 比較1.1.1和1.1.2的結果是否相等。1.1.1。
$size- 獲取array欄位的大小。1.1.2。- 從結果1.1.2.1
$size中獲取陣列的大小。1.1.2.1。
$setIntersection- 相交array欄位和輸入陣列,回傳陣列中的相交值。
db.collection.find({
$expr: {
$eq: [
{
$size: "$array"
},
{
$size: {
$setIntersection: [
"$array",
[
"b",
"d",
"e",
"f"
]
]
}
}
]
}
})
示例 Mongo Playground
更新
對于聚合查詢以查找缺失的元素:
$match- 過濾檔案(如第一個答案中所述$expr)。$project- 裝飾輸出檔案。對于missingElement欄位,您需要$filter運算子查找輸入陣列中不存在的每個值($not和$in)array。
db.collection.aggregate([
{
$match: {
$expr: {
$eq: [
{
$size: "$array"
},
{
$size: {
$setIntersection: [
"$array",
[
"b",
"d",
"e",
"f"
]
]
}
}
]
}
}
},
{
$project: {
array: 1,
missingElement: {
$filter: {
input: [
"b",
"d",
"e",
"f"
],
cond: {
$not: {
$in: [
"$$this",
"$array"
]
}
}
}
}
}
}
])
示例 Mongo Playground(聚合查詢)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/483610.html
上一篇:貓鼬如何計算一個月中的獨特天數?
