Pymongo $in Query Not Working

Jer picture Jer · Aug 12, 2016 · Viewed 15.6k times · Source

Seeing some strange behavior in Pymongo $in query. Looking for records that meet the following query:

speciesCollection.find({"SPCOMNAME":{"$in":['paddlefish','lake sturgeon']}})

The query returns no records.

If I change it to find_one the it works returning the last value for Lake Sturgeon. The field is a text filed with one vaule. So I am looking for records that match paddlefish or Lake Sturgeon.

It works fine in Mongo Shell like this:

speciesCollection.find({SPCOMNAME:{$in: ['paddlefish','lake strugeon']}},{_id:0})

Here is the result from shell

{ "SPECIES_ID" : 1, "SPECIES_AB" : "LKS", "SPCOMNAME" : "lake sturgeon", "SP_SCINAME" : "Acipenser fulvescens
{ "SPECIES_ID" : 101, "SPECIES_AB" : "PAH", "SPCOMNAME" : "paddlefish", "SP_SCINAME" : "Polyodon spathula" }

Am I missing something here?

Answer

DAXaholic picture DAXaholic · Aug 12, 2016

I think you have a typo or some other error in your program as I just did a test with your sample data and query and it works - see the GIF

Below is my test code which connects to the database called so and the collection speciesCollection, maybe you find the error in yours with it

import pymongo

client = pymongo.MongoClient('dockerhostlinux1', 30000)
db = client.so
coll = db.speciesCollection

result = coll.find({"SPCOMNAME":{"$in":['paddlefish','lake sturgeon']}})
for doc in result:
    print(doc)

GIF