【发布时间】:2016-11-27 16:22:01
【问题描述】:
使用:node/express/mongodb/mongoose
通过上面列出的设置,我已经创建了我的架构和模型,并且可以根据需要进行查询。我想知道如何做的是,将 express request.query 对象传递给猫鼬中的 Model.find() 以匹配和查询嵌套文档的 _id。在这种情况下,查询可能类似于:
http://domain.com/api/object._id=57902aeec07ffa2290f179fe
其中 object 是存在于数据库其他位置的嵌套对象。我可以轻松查询其他字段。 _id 是唯一一个给出问题的人。它返回一个空的匹配数组。
这个可以吗?
这是一个示例,而不是 ACTUAL 架构,但这说明了重点..
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
这会返回一个空数组
【问题讨论】:
-
请添加一些代码或架构
标签: node.js mongodb express mongoose