使用:节点/快递/的MongoDB /猫鼬蒙戈/快递查询嵌套_id从查询字符串
上面列出的设置,我创建了我的架构和模型,并根据需要可以查询。我想知道如何做,但是,将明文request.query对象传递给mongoose中的Model.find()以匹配和查询嵌套文档的_id。在这种情况下,查询可能如下所示:
http://domain.com/api/object._id=57902aeec07ffa2290f179fe
其中object是数据库中其他位置存在的嵌套对象。我可以轻松地查询其他字段。 _id是唯一一个提出问题的人。它返回一个空的数组。
可以这样做吗?
这是一个例子,而不是实际的模式,但这种跨越得到点..
let Category = mongoose.Schema({
name: String
})
let Product = mongoose.Schema({
name: String,
description:String,
category:Category
})
// sample category..
{
_id:ObjectId("1234567890"),
name: 'Sample Category'
}
// sample product
{
_id:ObjectId("0987654321"),
name:'Sample Product',
description:'Sample Product Description',
category: {
_id:ObjectId("1234567890"),
name: 'Sample Category'
}
}
所以,我正在寻找的是......如果我有快递以下..
app.get('/products',function(req,res,next){
let query = req.query
ProductModel.find(query).exec(function(err,docs){
res.json(docs)
})
})
这将允许我在查询参数中指定任何我想要的查询。所以,我可以..
http://domain.com/api/products?name=String
http://domain.com/api/products?description=String
http://domain.com/api/products?category.name=String
我可以这样category.name查询,但我不能这样做:
http://domain.com/api/products?category._id=1234567890
这将返回一个空数组
请添加一些代码或模式 –