2017-01-29 45 views
1

我查詢了一個靜音不一致的API,因此不會爲所有數字索引(但大多數)返回對象。爲了進一步繼續在數字索引上使用.count(),我一直使用db.collection.insert({})插入空文檔。查找數據庫中的空文檔

我現在的問題是:如何查找和計數這些對象? 像db.collection.count({})這樣的東西顯然不起作用。

感謝您的任何想法!

回答

0

您可以檢查是否存在$exists爲必填字段,以返回空白文檔。

db.collection.count({"fieldName": { $exists: false }}) 
1

使用$ where操作符。 Javascript表達式僅返回包含單個鍵的文檔。 (即單鍵爲文件「_id」鍵)

db.collection.find({ "$where": "return Object.keys(this).length == 1" }).count() 
0

MongoDB的3.4和較新的,考慮運行下面的總管道讓這些空文件/空字段的計數:

db.collection.aggregate([ 
    { "$project": { 
     "hashmaps": { "$objectToArray": "$$ROOT" } 
    } }, 
    { "$project": { 
     "keys": "$hashmaps.k" 
    } }, 
    { "$group": { 
     "_id": null, 
     "count": { "$sum": { 
      "$cond": [ 
       { 
        "$eq":[ 
         { 
          "$ifNull": [ 
           { "$arrayElemAt": ["$keys", 1] }, 
           0 
          ] 
         }, 
         0 
        ] 
       }, 
       1, 
       0 
      ] 
     } } 
    } } 
]);