【问题标题】:Mongo / Express Query Nested _id from query stringMongo / Express Query 来自查询字符串的嵌套_id
【发布时间】: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


【解决方案1】:

将您的查询更改为http://domain.com/api/object/57902aeec07ffa2290f179fe 并尝试

app.get('/api/object/:_id', function(req, res) {

    // req._id is Mongo Document Id
    // change MyModel to your model name 
    MyModel.findOne( {'_id' : req._id }, function(err, doc){
        // do smth with this document 
        console.log(doc);
    });

});

或者试试这个 http://domain.com/api/object?id=57902aeec07ffa2290f179fe

app.get('/api/object', function(req, res) {
    var id = req.param('id');
    MyModel.findOne( {'_id' : id }, function(err, doc){
        console.log(doc);
    });
})

  1. 首先通过这篇文章提高你在getting URL and POST Parameters 的技能。
  2. 阅读官方Express 4.x API Documentation

【讨论】:

  • 查看更新后的帖子,看看是否更有意义
【解决方案2】:

没关系,我觉得很可笑。它就像我在上面发布的那样工作......在我修复了我的架构中的一个错误之后。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多