gpt4 book ai didi

mongodb - 如何预测字段是否存在

转载 作者:IT老高 更新时间:2023-10-28 12:29:33 25 4
gpt4 key购买 nike

如果我有类似以下结构的文档。我正在用计算结果更新它们,我想知道结果是否已经插入到文档中。假设我为每个文档运行计算“c”和计算“d”。现在我想显示所有文档的表格,并显示是否已经执行了计算“d”。对于这张表,我不关心计算'c'。

{
"_id":1
"a":1,
"resultsOfComputation":{
"c":{large embedded document},
"d":{large embedded document}
}
}

{
"_id":2
"a":1,
"resultsOfComputation":{
"c":{large embedded document}
}
}

我想得到一个结果,告诉我文档是否包含特定字段。例如,我想知道它是否包含字段“resultsOfComputation.d”,无论该字段的值是什么。

“resultsOfComputation.d”的查询结果示例如下:

{
"_id":1
"a":1,
"resultsOfComputation":{
"d":true
}
}

{
"_id":2
"resultsOfComputation":{
"d":false
}
}

如果“resultsOfComputation.d”不在文档中,也可以是未定义的,这也可以:

{
"_id":1
"a":1,
"resultsOfComputation":{
"d":true
}
}

{
"_id":2
"a":1,
"resultsOfComputation":{}
}

一般来说,这个想法是获取文档的所有根元素,但对于选定的(一个)计算结果只获取真/假/未定义,因为计算结果是一个大型嵌入文档。

最佳答案

运行以下聚合管道以获得所需的结果:

db.collection.aggregate([
{
"$project": {
"a": 1,
"resultsOfComputation": {
"d": { "$gt": ["$resultsOfComputation.d", null] }
}
}
}
])

样本输出

/* 1 */
{
"_id" : 1,
"a" : 1,
"resultsOfComputation" : {
"d" : true
}
}

/* 2 */
{
"_id" : 2,
"a" : 1,
"resultsOfComputation" : {
"d" : false
}
}

关于mongodb - 如何预测字段是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38720388/

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