Mongoosejs在objectId的数组上找到

Mongoosejs find on array of objectId

本文关键字:数组 objectId Mongoosejs      更新时间:2024-01-08

几个小时以来,我一直在努力解决这个问题,因此在这里发帖。我试图在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); //and
A.find({b : {$in: new ObjectId("54e545fb6a0d90bb0772808b")}}, callback); //manually got this one value from db
var callback = function (err, data) {
        console.log("----------------------");
        if (err)
            console.log(err);
        else {
            console.log(JSON.stringify(data, null, ''t'));
        }
        console.log("----------------------");
    }

这两者似乎都不起作用。谢谢你的帮助。

假设arr是表示ObjectId:的字符串数组

A.find({b : {
  $in: arr.map(function(o){ return mongoose.Types.ObjectId(o); })
}}, callback);