Node.js ObjectId的Mongoose findOne数组返回null
使用ObjectId数组执行findOne查询时遇到一些问题。简化模式如下: 型号:Node.js ObjectId的Mongoose findOne数组返回null,node.js,mongodb,mongoose,mongodb-query,Node.js,Mongodb,Mongoose,Mongodb Query,使用ObjectId数组执行findOne查询时遇到一些问题。简化模式如下: 型号: var InboxSchema = new Schema({ _users: [ { type: mongoose.Schema.ObjectId, ref: 'User', required: 'Users are required', unique: true }
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);
}
var用户=[];
var userIds=['5567ead844997f969fe3f00f','558b8492f1723b090b414765';
对于(var i=0;i尝试使用mongo数组查询运算符或
$all将目标与所有数组元素匹配:
Inbox.findOne({“\u users”:{“$all”:users}).exec(函数(err,Inbox){
控制台日志(收件箱);
})
$in将目标与任何数组元素匹配:
Inbox.findOne({“users”:{“$in”:users}).exec(函数(err,Inbox){
控制台日志(收件箱);
})
还值得注意的是,OP不需要手动将字符串强制转换为ObjectID,因为Mongoose将根据模式为您执行此操作。我希望所有人都能:“第一篇文章”我的编辑只是为了添加你可能无法添加的链接,并提高JSON语法的可移植性。做得好。解决了这个问题。谢谢@AdamWysocki的帮助。@JohnnyHK:我想知道演员阵容,谢谢你的提示。@AdamWysocki不是说chatter是g在这里也是一样,但是看看我刚才用@
和你的用户名做了什么。这就是你在这里“标记”来提醒和回应那些评论的人的方式。除非他们在观察别人,否则他们看不到你的评论。最好看一下“帮助中心”链接。很高兴为你做贡献。