2017-04-20 81 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