忽略 MongoDB 查询结果中的空字段

Sag*_*pta 4 mongodb

有没有办法从 MongoDB 查询结果的文档(查找或聚合)中省略空字段(例如空字符串或空数组)。

数据库中的文档:

{
    "_id" : ObjectId("5dc3fcb388c1c7c5620ed496"),
    "name": "Bill",
    "emptyString" : "",
    "emptyArray" : []
}
Run Code Online (Sandbox Code Playgroud)

输出:

{
    "_id" : ObjectId("5dc3fcb388c1c7c5620ed496"),
    "name": "Bill"
}
Run Code Online (Sandbox Code Playgroud)

Elasticsearch 的类似问题:Omit null fields from elasticsearch results

Mah*_*gar 6

请使用聚合函数。如果你想删除密钥。您可以通过使用 $project 来使用 $cond。

db.Speed.aggregate( [
   {
      $project: {
         name: 1,
         "_id": 1,
         "emptyString": {
            $cond: {
               if: { $eq: [ "", "$emptyString" ] },
               then: "$$REMOVE",
               else: "$emptyString"
            }
         },
         "emptyArray": {
            $cond: {
               if: { $eq: [ [], "$emptyArray" ] },
               then: "$$REMOVE",
               else: "$emptyArray"
            }
         }
      }
   }
] )
Run Code Online (Sandbox Code Playgroud)