使用ObjectIds数组执行findOne查询时遇到一些问题。简化模式如下:
型号:
var InboxSchema = new Schema({
_users: [
{
type: mongoose.Schema.ObjectId,
ref: 'User',
required: 'Users are required',
unique: true
}
]
}
mongoose.model('Inbox', InboxSchema)
查询:
var users = [];
var userIds = ['5567ead844997f969fe3f00f', '558b8492f1723b090b414765'];
for (var i=0; i<userIds.length; i++) {
users.push(new mongoose.Types.ObjectId(userIds[i]));
}
Inbox.findOne({_users: users}).exec(function (err, inbox) {
console.log(inbox);
}
收件箱总是返回null,尽管它在使用Mongo shell时返回了一些东西,所以我知道我的查询有效。以前,我只是单独userIds
查询,我后来发现它不起作用,因为我不得不使用ObjectId进行查询。但是,即使将字符串转换为ObjectId也不起作用。