如何动态构建具有objectId的猫鼬查询?

时间:2019-07-15 15:32:02

标签: mongodb mongoose

我正在尝试动态构建猫鼬查询。我遇到的问题是,当查询包含objectId时,我不知道如何执行此操作。

我正在使用猫鼬5.4.6。

我的猫鼬模式如下:

stuff: String,
user: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'User'
    },
moreStuff: String,
});

我需要动态构建查询,要查询的可能字段之一是user。要查询的字段通过params对象发送到服务器。当我要查询的字段是stuff时,这很容易。我只是做如下事情:

let query = {};
query.stuff = params.stuff;

this.model('MyModel').find(query)...

但是,我无法弄清楚如何搜索用户,因为params.user只是mongo id的字符串版本,但是必须将其格式化为objectId("params.user")才能使查询正常工作。也就是说,我需要类似的东西:

query.user = objectId("params.stuff");

如何使它正常工作?

1 个答案:

答案 0 :(得分:0)

我通常会这样。

const ObjectId = require('mongodb').ObjectID
const MyModel = require('../models/mymodel')

let query = MyModel.findOne()

query.where('_id').equals(new ObjectId(params.stuff))