我在MongoDb中有一个数据集合,其形状为:
[{ "_id": "1",
"Sq1" : 5,
"Sq1comment" : "In general you aaaaaa.",
"Sq2" : 8,
"S2comment" : null,
"Sq3" : 5,
"Sq3comment" : "A person bbbbb."
},
{ "_id": "2",
"Sq1" : 4,
"Sq1comment" : "In general you cc.",
"Sq2" : 8,
"S2comment" : "A story ff",
"Sq3" : 5,
"Sq3comment" : null
}
]
我想提取评论'字段,但仅反映结果中不为空的字段。
我可以用查询逐个提取字段(Sq1comment; Sq2comment,Sq3comment)
db.collection.find({ "Sq1comment": { $not: { $type: 10 } })
输出为:
[{ "_id": "1",
"Sq1comment" : "In general you aaaaaa.",
"Sq3comment" : "A person bbbbb."
}]
或者如果我进行汇总$项目的评论'字段中的所有空值都在那里:
db.collection.aggregate([{$project:
{ "Sq1comment": "$Sq1comment",
"Sq2comment": "$Sq2comment",
"Sq3comment": "$Sq3comment"
} }])
输出为:
[{ "_id": "1",
"Sq1comment" : "In general you aaaaaa.",
"S2comment" : null,
"Sq3comment" : "A person bbbbb."
},
{ "_id": "2",
"Sq1comment" : "In general you cc.",
"S2comment" : "A story ff",
"Sq3comment" : null
}
]
我希望项目数据显示所有注释字段,但只显示非空的条目。因此排除空字段是聚合。
答案 0 :(得分:0)
也许您可以先尝试$unwind
,然后再尝试$group
以获得所需的结果。
赞:
{
$unwind:
{
path: <field path>,
includeArrayIndex: <string>,
preserveNullAndEmptyArrays: <boolean>
}
}
preserveNullAndEmptyArrays
将有助于排除空值。
更多访问链接:
https://docs.mongodb.com/manual/reference/operator/aggregation/unwind/
https://docs.mongodb.com/manual/reference/operator/aggregation/group/