问题
I have a database collection (named fols) like so:
{'followers':
{
'123':1
'123':2
'123':3
}
}
If I run the query (Using pymongo):
cursor = fols.find()
cursor.count()
>>3
Works fine. Now:
cursor = fols.find({'followers':{'123':1}})
cursor.count()
>>1
Again works fine. BUT if I try:
cursor = fols.find({'followers':{'123':{'$exists': True}}})
cursor.count()
>> 0
It returns 0 even though there are 3 records.
回答1:
When you're not matching a complete object you need to use dot notation to use an operator against an embedded object. So in this case:
cursor = fols.find({'followers.123':{'$exists': True}})
回答2:
Try the dot syntax:
cursor = fols.find({'followers.123': {'$exists': True}})
But also see my comment above. You can't have the same key more than once in a (sub-)document.
来源:https://stackoverflow.com/questions/12398625/mongodb-exists-always-returning-0