最近在操作MongoDB時,遇到一個比較坑爹的問題,就是將“query”當做一條的記錄,它在一些條件下就“失效”。
我使用的MongoDB資料庫版本是1.8.3。MongoDB shell version: 2.0.3
具體資料:
{ "_id" : ObjectId("4fe955021219143f31b9d2b9"), "query" : 1, "test" : [ 1, 2, 3 ] }{ "_id" : ObjectId("4fe9557b1219143f31b9d2ba"), "q" : 1, "r" : 2 }{ "_id" : ObjectId("4fe955b11219143f31b9d2bb"), "query1" : 1, "r" : 2 }
在正常的key value尋找時沒有任何問題:
PRIMARY> db.testin.find({query: 1}){ "_id" : ObjectId("4fe955021219143f31b9d2b9"), "query" : 1, "test" : [ 1, 2, 3 ] }PRIMARY> db.testin.find({q: 1}){ "_id" : ObjectId("4fe9557b1219143f31b9d2ba"), "q" : 1, "r" : 2 }PRIMARY> db.testin.find({quer1: 1})
用or邏輯尋找也沒有問題:
PRIMARY> db.testin.find({$or:[{query: 1}]}){ "_id" : ObjectId("4fe955021219143f31b9d2b9"), "query" : 1, "test" : [ 1, 2, 3 ] }PRIMARY> db.testin.find({$or:[{q: 1}]}){ "_id" : ObjectId("4fe9557b1219143f31b9d2ba"), "q" : 1, "r" : 2 }PRIMARY> db.testin.find({$or:[{query1: 1}]}){ "_id" : ObjectId("4fe955b11219143f31b9d2bb"), "query1" : 1, "r" : 2 }
但用in邏輯尋找時,就出現query作為key的文檔找不到,具體如下:
PRIMARY> db.testin.find({query: {$in: [1]}})PRIMARY> db.testin.find({query1: {$in: [1]}}){ "_id" : ObjectId("4fe955b11219143f31b9d2bb"), "query1" : 1, "r" : 2 }PRIMARY> db.testin.find({q: {$in: [1]}}){ "_id" : ObjectId("4fe9557b1219143f31b9d2ba"), "q" : 1, "r" : 2 }
個人感覺這應該算是個bug,造成的具體原因還在尋找過程中,今天先把這個問題拋出來,有過這方面經驗的大牛,希望能指教一下。謝謝