Mongodb Mongoose find返回空数组
我有一个mongoDB文档,看起来像这样:Mongodb Mongoose find返回空数组,mongodb,mongoose,Mongodb,Mongoose,我有一个mongoDB文档,看起来像这样: { "_id": { "$oid": "5b99247efb6fc01dae438815" }, "participants": [ "5b758a8341ee61f049ded486", "5b94fb4ffb6fc01dae40eae3" ] } Mongoose中的文档模式就是这样定义的 var conversationSchema = new mongoose.S
{
"_id": {
"$oid": "5b99247efb6fc01dae438815"
},
"participants": [
"5b758a8341ee61f049ded486",
"5b94fb4ffb6fc01dae40eae3"
]
}
Mongoose中的文档模式就是这样定义的
var conversationSchema = new mongoose.Schema({
participants: [{ type: mongoose.Schema.ObjectId, ref: 'User'}],
});
我正在获取这样的数据
var ccc = Conversation.find({participants : "5b758a8341ee61f049ded486"});
ccc.exec(function(err, conversations){
res.status(200).json(conversations);
});
问题是我得到的是一个空数组响应[]
我认为问题出在模式上,但我不知道如何才能让它起作用。
编辑,
如果我将架构更改为以下内容,它将起作用:
var conversationSchema = new mongoose.Schema({
participants: [{ type: String}],
});
但是我想使用
mongoose.Schema.ObjectId
而不是字符串
作为外键。尝试向此行添加类型:
participants: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User'}]
它无法识别数组中的项目,因为它们是字符串,您应该使用类似{“$oid”:“585bb0086c57cd2265b1cbd3”的对象,因此请在数据库中重新插入项目,然后重试。使用ObjectId强制转换参与者id
Conversation.find({参与者:ObjectId(“5b758a8341ee61f049ded486”)}
尝试了这个mongoose.Types.ObjectId(“5b758a8341ee61f049ded486”)
但仍然是相同的空数组响应。