Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
398 views
in Technique[技术] by (71.8m points)

pymongo - mongodb $exists always returning 0

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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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}})

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...