mongodb $exists always returning 0

∥☆過路亽.° 提交于 2020-01-09 11:37:08

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!