gpt4 book ai didi

mongodb - 仅当数组中的所有元素都匹配 MongoDb 中的条件时才获取文档

转载 作者:行者123 更新时间:2023-12-04 02:27:41 26 4
gpt4 key购买 nike

我正在尝试删除所有孤儿项目。在 db 中,我需要获取所有用户都被删除的项目。已经尝试使用下面的查询,但它总是在删除字段不存在的情况下给出结果。

db.projects.find({
"user_list": {
$not: {
$elemMatch: {
"deleted": false
}
}
},
"user_list.deleted": {$exists: true}
}, {"user_list": 1})
需要帮助编写查询以获取删除所有用户的唯一项目。例如,在下面的示例中,我应该只获取第二个文档。
项目列表
/* 1 */
{
"_id" : ObjectId("636a6aa584d5f92f14f0c548"),
"user_list" : [
{
"deleted" : false,
"user_id" : "602cf72a3fcad3cc605b8d59"
},
{
"deleted" : true,
"user_id" : "602cf72a3fcad3cc605b8d50"
}
]
}

/* 2 */
{
"_id" : ObjectId("602e443bacdd4184511d6e29"),
"user_list" : [
{
"deleted" : true,
"user_id" : "602cf72a3fcad3cc605b8d59"
},
{
"deleted" : true,
"user_id" : "602cf72a3fcad3cc605b8d59"
},
{
"deleted" : true,
"user_id" : "602cf72a3fcad3cc605b8d59"
}
]
}

/* 3 */
{
"_id" : ObjectId("60332242acdd4184511ed664"),
"user_list" : [
{
"deleted" : true,
"user_id" : "602cf72a3fcad3cc605b8d59",
},
{
"deleted" : true,
"user_id" : "602cf72a3fcad3cc605b8d59"
},
{
"user_id" : "602cf72a3fcad3cc605b8d59"
}
]
}

最佳答案

您可以使用 $nin 过滤掉 falsenull值。

db.projects.find({
"user_list.deleted": {
$nin: [
false,
null
]
}
})
MongoDB Playground

关于mongodb - 仅当数组中的所有元素都匹配 MongoDb 中的条件时才获取文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66311613/

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