gpt4 book ai didi

mongodb - 如果未找到结果,则返回 null 默认值

转载 作者:行者123 更新时间:2023-12-03 23:14:47 24 4
gpt4 key购买 nike

我有一个看起来像这样的集合:

{  
"value" : "20",
"type" : "square",
"name" : "form1"
}
{
"value" : "24",
"type" : "circle",
"name" : "form2"
}
{
"value" : "12",
"type" : "square",
"name" : "form3"
}

我想用 name = form2 提取文档所以我输入:
db.myCollec.find({"name":"form2"} , {"name":1, "type":1, "_id":0})

结果是:
{ "name" : "form2", "type" : "circle" }

现在,如果我想查找带有 name = form4 的文档我输入:
db.myCollec.find({"name":"form4"} , {"name":1, "type":1, "_id":0})

但这不会返回任何内容,因为没有具有此名称的文档。

但是我希望返回值如下所示:
{ "name" : "form4", "type" : null }

我该怎么做?

最佳答案

您可以使用以下聚合

如果没有 $match ,Mongodb 不会产生结果通过查询找到的 ed 数据。

但是你可以使用 $facet 在单个阶段内处理多个聚合管道的聚合。

所以先用 $facet 获取 $match ed 文档和使用 $project 如果没有找到 ( $ifNull ) 数据,则 ionic 。

let searchTerm = "form2"

db.myCollec.aggregate([
{ "$facet": {
"data": [
{ "$match": { "name": searchTerm }},
{ "$project": { "name": 1, "type": 1, "_id": 0 }}
]
}},
{ "$project": {
"name": {
"$ifNull": [{ "$arrayElemAt": ["$data.name", 0] }, searchTerm ]
},
"type": {
"$ifNull": [{ "$arrayElemAt": ["$data.type", 0] }, null]
}
}}
])

关于mongodb - 如果未找到结果,则返回 null 默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53210481/

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