2017-04-20 64 views
2

毫無理由,我不明白,我不能在文件查詢特定場場蒙戈找到查詢總是返回空結果爲存在

我有一個集合稱爲orders 當我運行:

db.orders.find({}).pretty(); 

我得到下面的結果:

{ 
    "_id": "585bc54ee5652c1e4a59a4c5", 
    "item": "Milk", 
    "amount": "20.0", 
    "user": "585bc154e5652c1e4a59a4bb" 
}, 
{ 
    "_id": "585bc54ee5652c1e4a55532ba", 
    "item": "Vanilla", 
    "amount": "10.0", 
    "user": "585bc154e5652c1e4a59a4bb" 
}, 
{ 
    "_id": "585bc54ee5652cbab3837b333", 
    "item": "Chocolate", 
    "amount": "15.0", 
    "user": "585bc154e5652c1e4a59a4bb" 
} 

所以現在我有問題選擇屬於特定用戶與用戶ID訂單585bc154e5652c1e4a59a4bb 記錄存在,但空總是返回

db.orders.find({"user":"585bc154e5652c1e4a59a4bb"}); --> returns {} 

以上返回空查詢。請問可能是什麼原因?

+0

你使用任何工具?或者它發生在mongo shell上? – AshokGK

+0

你嘗試過'db.orders.find({「user」:ObjectId(「585bc154e5652c1e4a59a4bb」)});'? – chridam

+0

沒有。我還沒有嘗試過。將嘗試現在和恢復 – Digitlimit

回答

2

嘗試用包裝ObjectId的ID,因爲它是它的一個字符串表示:

db.orders.find({"user": ObjectId("585bc154e5652c1e4a59a4bb") 

如果你使用Node.j那麼以下就足夠了:

var ObjectId = require('mongodb').ObjectId, 
    o_id = new ObjectId("585bc154e5652c1e4a59a4bb"), 
    collection = db.collection('orders'); 

collection.find({_id: o_id}).toArray((err, orders) => console.log(orders)); 

或正在使用集合方法:

var ObjectId = require('mongodb').ObjectId, 
    o_id = new ObjectId("585bc154e5652c1e4a59a4bb"), 
    collection = db.collection('orders'); 

collection.aggregate([ { "$match": { "_id": o_id } } ], (err, result) => { 
    console.log(result); 
}). 
+1

謝謝一堆。很好的答案。 – Digitlimit

+0

這些東西來自文檔(或者不存在)的含義不清楚,我感到非常沮喪。謝謝! – Brett84c

0
db.orders.find({user : "585bc154e5652c1e4a59a4bb"}); 

用戶可以或不可以用引號引起來。對我而言,這兩種情況都適用。

+0

謝謝@Nikita曼特里,但我已經嘗試過,並不工作 – Digitlimit