我无法理解我无法查询文件中的特定字段
我有一个名为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 :(得分: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"});
用户可以或不可以用引号括起来。对我来说,它适用于这两种情况。