[英]Spring data mongo @Query with / or $regex add quotes
[英]How to combine Mongo $in and $cond
我有一個看起來像這樣的集合(每個數組元素是 1 個文檔):
[
{
"_id": 1,
"title": "title",
"data": [
{
"_id": 41,
"name": "test 1"
},
{
"_id": 42,
"name": "test 2"
},
{
"_id": 43,
"name": "test 3"
}
]
},
{
"_id": 1,
"title": "title 2",
"data": [
{
"_id": 44,
"name": "test 4"
},
{
"_id": 45,
"name": "test 5"
}
]
},
]
我想做的是使用$redact
redact 過濾掉所有文檔,其中 data._id 是$in
[41, 42]
的數組。 因此,如果 data._id 曾經等於 41 或 42,則應保留整個文檔。 否則,它應該被修剪。
{
$cond: {
if: {
$in: [
"$data._id",
[ 41, 42 ]
]
},
then: "$$KEEP",
else: "$$PRUNE"
}
}
但是,當我在 Compass 中使用$redact
階段時,上面的查詢不會返回任何內容。
我認為您缺少 $redact 聚合,除了查詢看起來不錯https://www.mongodb.com/docs/manual/reference/operator/aggregation/in/
{
$redact: {
$cond: {
if: {
$in: [
"$data._id",
[ 41, 42 ]
]
},
then: "$$KEEP",
else: "$$PRUNE"
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.