我查詢了一個靜音不一致的API,因此不會爲所有數字索引(但大多數)返回對象。爲了進一步繼續在數字索引上使用.count(),我一直使用db.collection.insert({})插入空文檔。查找數據庫中的空文檔
我現在的問題是:如何查找和計數這些對象? 像db.collection.count({})這樣的東西顯然不起作用。
感謝您的任何想法!
我查詢了一個靜音不一致的API,因此不會爲所有數字索引(但大多數)返回對象。爲了進一步繼續在數字索引上使用.count(),我一直使用db.collection.insert({})插入空文檔。查找數據庫中的空文檔
我現在的問題是:如何查找和計數這些對象? 像db.collection.count({})這樣的東西顯然不起作用。
感謝您的任何想法!
您可以檢查是否存在$exists
爲必填字段,以返回空白文檔。
db.collection.count({"fieldName": { $exists: false }})
使用$ where操作符。 Javascript表達式僅返回包含單個鍵的文檔。 (即單鍵爲文件「_id」鍵)
db.collection.find({ "$where": "return Object.keys(this).length == 1" }).count()
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
]
} }
} }
]);