Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pymongo $in Query Not Working

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?

like image 717
Jer Avatar asked Aug 12 '16 13:08

Jer


1 Answers

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

like image 122
DAXaholic Avatar answered Oct 13 '22 16:10

DAXaholic