Mongoosejs在objectId数组上查找

27 浏览
0 Comments

Mongoosejs在objectId数组上查找

我已经努力尝试了几个小时,所以现在在这里发帖。我尝试在mongoose中使用find()操作符,找出是否有一个键与数组中的任何一个元素匹配,类似于《如何在Mongoose中执行id数组查询?》但是没有得到预期的结果。

这是我的模式,

var a = new mongoose.Schema({
    b : { type : mongoose.Schema.ObjectId, ref: 'B' },
});
var A = mongoose.model('A', a);

现在我有一个数组arr[],其中包含类B的一些可能的对象id。即

arr = ["54e545fb6a0d90bb0772808b", "xxxxxxxxxxxxx", ...]

我想找到所有类型为A的文档,其中字段b与arr中的任何元素匹配。注意,arr是一个字符串数组,但b保存的是ObjectId。

到目前为止,我尝试过以下方法,

A.find({b : {$in: arr}}, callback); //和
A.find({b : {$in: new ObjectId("54e545fb6a0d90bb0772808b")}}, callback); //从数据库手动获取了这个值
var callback = function (err, data) {
        console.log("----------------------");
        if (err)
            console.log(err);
        else {
            console.log(JSON.stringify(data, null, '\t'));
        }
        console.log("----------------------");
    }

这两个都似乎不起作用。谢谢帮助。

0
0 Comments

问题的出现原因是使用了错误的id,解决方法是使用正确的id。此外,不需要将字符串转换为ObjectId也可以正常工作。因此,解决方法是检查使用的id是否正确,并尝试使用正确的id进行查询。

0