web-dev-qa-db-ja.com

「キーが存在しない」という条件付きのMongo?

キー==なしの場合、またはキーが存在しない場合に、条件を使用してドキュメントを検索したいと思います。このようなもの:

myDoc = self.request.root.db.myDocs.find_one({
                          '$or': [
                              {'myKey' : $doesNotExist } ,
                              {'myKey' : None }
                            ]
                    })

また、次のようなキーがないだけでドキュメントを見つけられるようにしたいと思います。

myDoc = self.request.root.db.myDocs.find_one( {'myKey' : $doesNotExist } )

どうすればこれを達成できますか?

20
zakdances

「キーが存在するかどうか」チェックの場合、.find()の使用はfind_one()よりも 大幅に高速 です。

単一のドキュメント:cursor = db.myDocs.find({"mykey": {"$exists": True}}).limit(1)

複数のドキュメント:cursor = db.myDocs.find({"mykey": {"$exists": True}})

if cursor.count() > 0:
    keyExists = True
else:
    keyExists = False
25
Sagar Hatekar

次のものを使用して、存在しないキーをテストできます。

db.myDocs.find_one({'myKey': { '$exists': False }})

$ exists演算子 に関するMongoドキュメント

15
Joe Day