2017-01-29 2 views
1

私は一貫性のない静的なAPIを照会したので、すべての数値インデックス(ただしそのほとんど)のオブジェクトは返されません。さらに、数値インデックスの.count()を使用して、空のドキュメントをdb.collection.insert({})で挿入しています。データベース内の空のドキュメントを見つける

私の質問は次のとおりです。 db.collection.count({})のようなものは、明らかに機能しません。

ありがとうございます!

答えて

0

$existsで必須フィールドが存在するかどうかをチェックして、空のドキュメントを返すことができます。

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

$ where演算子を使用します。 Javascript式は、単一のキーを含むドキュメントのみを返します。 MongoDBの3.4以降の場合

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

(単一キーは文書「_id」キーということ)、これらの空のドキュメント/ nullのフィールドの数を取得するには、次の集計パイプラインの実行を検討:

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 
      ] 
     } } 
    } } 
]); 
関連する問題