次のクエリを実行したいと思います。
db.mycollection.find(HAS IMAGE URL)
正しい構文は何でしょうか?
ベストアンサー1
これにより、「IMAGE URL」というキーを持つすべてのドキュメントが返されますが、null 値が残っている可能性があります。
db.mycollection.find({"IMAGE URL":{$exists:true}});
これにより、「IMAGE URL」というキーとnull 以外の値の両方を持つすべてのドキュメントが返されます。
db.mycollection.find({"IMAGE URL":{$ne:null}});
また、ドキュメントによると、$exists は現在インデックスを使用できませんが、$ne は使用できます。
編集: この回答への関心の高さから、いくつかの例を追加しました
次の挿入があるとします:
db.test.insert({"num":1, "check":"check value"});
db.test.insert({"num":2, "check":null});
db.test.insert({"num":3});
これにより、3 つのドキュメントがすべて返されます。
db.test.find();
これにより、最初のドキュメントと 2 番目のドキュメントのみが返されます。
db.test.find({"check":{$exists:true}});
これは最初のドキュメントのみを返します。
db.test.find({"check":{$ne:null}});
これにより、2 番目と 3 番目のドキュメントのみが返されます。
db.test.find({"check":null})