2016-08-12 34 views
5

Thấy một số hành vi lạ trong truy vấn Pymongo $in. Tìm kiếm hồ sơ đáp ứng truy vấn sau:

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

Truy vấn không trả về bản ghi nào.

Nếu tôi thay đổi thành find_one nó hoạt động trở lại giá trị cuối cùng cho Lake Sturgeon. Trường là một văn bản được gửi với một vaule. Vì vậy, tôi đang tìm kiếm hồ sơ phù hợp với paddlefish hoặc Lake Sturgeon.

Nó hoạt động tốt trong Mongo Shell như thế này:

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

Đây là kết quả từ vỏ

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

Tôi có thiếu cái gì ở đây?

Trả lời

8

Tôi nghĩ rằng bạn có một lỗi đánh máy hoặc một số lỗi khác trong chương trình của bạn như tôi chỉ cần làm một thử nghiệm với dữ liệu mẫu của bạn và truy vấn và nó hoạt động - xem GIF

Dưới đây là mã thử nghiệm của tôi mà kết nối với cơ sở dữ liệu gọi so và bộ sưu tập speciesCollection, có thể bạn tìm ra lỗi trong bạn với nó

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 thất bại trên một phần của tôi. Arrggh !! – Jer

Các vấn đề liên quan