2017-08-11 47 views
0

好了,即时得到所有convensations用下面的查询:阵列MongoDB的查询不会得到任何结果

return convensations.findOne({}).lean().then(function (convensations) { 
console.log(convensations); 
}); 

那会导致如下:

{ _id: 598dd4458b08b727dc53d4a6, 
    initiateduser: 'spillinfo', 
    gang: false, 
    global: false, 
    members: [ 'spillinfo', '59312d2b329b7535b07e273c' ], 
    name: 'no name', 
    __v: 0 } 

这就是完全好,但当我做

var userid = "59312d2b329b7535b07e273c"; 
     return convensations.find({members: userid}).lean().then(function (convensations) { 
console.log(convensations); 
}); 

它不会给我任何结果,为什么是t帽子?

即时我做错了,以检查如果用户ID是在成员数组内?

UPDATE编辑:

DB模式:

new Schema({ 
    initiateduser : String, 
    name: {type:String, default: 'no name'}, 
    members: { type: Array, default: []}, 
    time: Number, 
    global: { type: Boolean, default: false}, 
    gang: { type: Boolean, default: false}, 

}); 

和例如插入的/创造新:

var conv = new convensations(); 
      conv.members = [userid, user2]; 
      conv.initiateduser = userid; 
      conv.save(function (err,room) { 

EDIT2:

从查询的一些调试:

getting convensations with userid 59312d2b329b7535b07e273c 
Mongoose: convensations.find({ members: ObjectId("59312d2b329b7535b07e273c") }, { fields: {} }) 
convensations: 0 
+0

它工作正常,我 – Sajeetharan

+0

你保存的ObjectId里面'memebers'阵列。请检查数据库内容 –

+0

数据库内容看起来不错。用模式更新了@Sajeetharan。 – maria

回答

1

改变你的模式作为,

new Schema({ 
    initiateduser : String, 
    name: {type:String, default: 'no name'}, 
    members: { type: [String], default: []}, 
    time: Number, 
    global: { type: Boolean, default: false}, 
    gang: { type: Boolean, default: false}, 

}); 
+0

谢谢。顺便说一句,你知道我不能使用$ nin成员的任何理由吗?r:$ nin需要一个数组 – maria

+0

不,你可以做到这一点 – Sajeetharan