Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js ObjectId的Mongoose findOne数组返回null_Node.js_Mongodb_Mongoose_Mongodb Query - Fatal编程技术网

Node.js ObjectId的Mongoose findOne数组返回null

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 }

使用ObjectId数组执行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);
}
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在这里也是一样,但是看看我刚才用
@
和你的用户名做了什么。这就是你在这里“标记”来提醒和回应那些评论的人的方式。除非他们在观察别人,否则他们看不到你的评论。最好看一下“帮助中心”链接。很高兴为你做贡献。