gpt4 book ai didi

mongodb - $nin 与 $expr

转载 作者:可可西里 更新时间:2023-11-01 09:38:14 29 4
gpt4 key购买 nike

我有一个查询来查找用户 CreatedBy 是否在 SharedWith 中。我想反转查询以检查 CreatedBy 是否不在 SharedWith 中。

[
{
"$match": {
"$and": [
{
"$and": [
{
"SharedWith": {
"$exists": true
}
},
{
"$expr": {
"$in": [
"$CreatedBy",
"$Multi_User"
]
}
}
]
}
]
}
}
]

MongoDB 不支持直接$nin$not 用于$and 查询。

知道如何实现这一目标。

用户文档是这样的,

   Collection = [
{"CreatedBy":
{"_id": "User001",
"Email": "user@eg.com",
"Name": "User001"},
"SharedWith": [
{"_id": "User001",
"Email": "user@eg.com",
"Name": "User001"},
{"_id": "User002",
"Email": "user@eg.com",
"Name": "User002"},
{"_id": "User003",
"Email": "user@eg.com",
"Name": "User003"},
]}

]

最佳答案

$nin是查询运算符而不是聚合运算符,也是 $expr仅支持 aggregation 运算符,不支持 query 运算符。所以,你应该使用 $not $in$expr表达 以这种方式

{
"$match": {
"$and": [
{
"$or": [
{
"Multi_User": {
"$exists": False
}
},
{
"$expr": {
"$not": { "$in": ["$CreatedBy", "$Multi_User"] }
}
}
]
}
]
}
}

关于mongodb - $nin 与 $expr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53595227/

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