2016-08-12 23 views
5

Widząc dziwne zachowanie w zapytaniu Pymongo $in. Wyszukiwanie rekordów spełniających następujące zapytanie:

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

Zapytanie nie zwraca żadnych rekordów.

Jeśli zmienię go na find_one, działa on zwracając ostatnią wartość dla jeziora Jesiotr. To pole jest tekstem złożonym z jednej vaule. Dlatego szukam płyt, które pasują do paddlefish lub Lake Sturgeon.

Współpracuje w Mongo Shell tak:

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

Oto wynik z muszli

{ "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" } 

jestem brakuje czegoś tutaj?

Odpowiedz

8

myślę, że masz literówkę lub inny błąd w programie, jak ja właśnie zrobiłem test z danymi przykładowymi i zapytania i to działa - patrz GIF

Poniżej jest moje kodu testu, który łączy się z bazą danych nazywa so oraz gromadzenia speciesCollection, może znaleźć błąd w twoim z nim

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

+0

Epic fail z mojej strony. Arrggh !! – Jer