MongoDB 聚合查询以查找具有缺失值的文档
MongoDB Aggregate Query to find the documents with missing values
我有大量对象,其中存储了不同员工的数据。
{
"employee": "Joe",
"areAllAttributesMatched": false,
"characteristics": [
{
"step": "A",
"name": "house",
"score": "1"
},
{
"step": "B",
"name": "car"
},
{
"step": "C",
"name": "job",
"score": "3"
}
]
}
有些情况下某个对象的分数完全缺失,我想从数据库中找出所有这些详细信息。
为了做到这一点,我编写了以下查询,但似乎我在某个地方出错了,因为它没有显示输出。
我希望此查询的数据为以下格式,以便很容易找出哪个员工缺少哪个步骤和哪个姓名的分数。
db.collection.aggregate([
{
"$unwind": "$characteristics"
},
{
"$match": {
"characteristics.score": {
"$exists": false
}
}
},
{
"$project": {
"employee": 1,
"name": "$characteristics.name",
"step": "$characteristics.step",
_id: 0
}
}
])
您需要使用$exists
来检查是否存在
您可以使用 $ifNull
来处理以下两种情况 1. score
字段缺失 2. score
为空。
db.collection.aggregate([
{
"$unwind": "$characteristics"
},
{
"$match": {
$expr: {
$eq: [
{
"$ifNull": [
"$characteristics.score",
null
]
},
null
]
}
}
},
{
"$group": {
_id: null,
documents: {
$push: {
"employee": "$employee",
"name": "$characteristics.name",
"step": "$characteristics.step",
}
}
}
},
{
$project: {
_id: false
}
}
])
这里是Mongo playground供您参考。
我有大量对象,其中存储了不同员工的数据。
{
"employee": "Joe",
"areAllAttributesMatched": false,
"characteristics": [
{
"step": "A",
"name": "house",
"score": "1"
},
{
"step": "B",
"name": "car"
},
{
"step": "C",
"name": "job",
"score": "3"
}
]
}
有些情况下某个对象的分数完全缺失,我想从数据库中找出所有这些详细信息。 为了做到这一点,我编写了以下查询,但似乎我在某个地方出错了,因为它没有显示输出。
我希望此查询的数据为以下格式,以便很容易找出哪个员工缺少哪个步骤和哪个姓名的分数。
db.collection.aggregate([
{
"$unwind": "$characteristics"
},
{
"$match": {
"characteristics.score": {
"$exists": false
}
}
},
{
"$project": {
"employee": 1,
"name": "$characteristics.name",
"step": "$characteristics.step",
_id: 0
}
}
])
您需要使用$exists
来检查是否存在
您可以使用 $ifNull
来处理以下两种情况 1. score
字段缺失 2. score
为空。
db.collection.aggregate([
{
"$unwind": "$characteristics"
},
{
"$match": {
$expr: {
$eq: [
{
"$ifNull": [
"$characteristics.score",
null
]
},
null
]
}
}
},
{
"$group": {
_id: null,
documents: {
$push: {
"employee": "$employee",
"name": "$characteristics.name",
"step": "$characteristics.step",
}
}
}
},
{
$project: {
_id: false
}
}
])
这里是Mongo playground供您参考。