Mongo查找始终返回存在的字段的空结果

时间:2017-04-20 09:13:46

标签: mongodb

我无法理解我无法查询文件中的特定字段

我有一个名为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 {}

上面的查询返回空。请问可能是什么原因?

2 个答案:

答案 0 :(得分: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 :(得分:0)

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

用户可以或不可以用引号括起来。对我来说,它适用于这两种情况。