这是我的架构
var Schema = new Schema{
name:String
topics:[{item:{type: ObjectId, ref: 'tag'},comment:String}]
}
所以'主题'字段包含一系列嵌入式文档。其中每个都包含一个ref和一个字符串'comment'。 有一种方法我可以找到一个特定的ref id(项目字段)?
我尝试了一些投影,但这有点意义你不觉得吗? Obiouvsly不起作用.. :)
Model
.find(
{ topics: {
$in: [{ item: ObjectId("56e0aa684e7c55c414a51d82") }]
}
},{name:1})
.exec(function(err, data) {
res.json(data)
});
编辑:我想出了这个解决方案:
Model
.find(
{'topics':
{$elemMatch :
{
item: "56e0aa684e7c55c414a51d82"
}
}
}
)
.exec(function(err, data) {
res.json(data)
});
答案 0 :(得分:1)
请尝试这个
Model.find({'topics.item': "56e916772acfbbf805612555"}, {name: 1})
.exec(function(err, data){
if (err)
console.log(err);
else
console.log(data);
});
使用数据进行测试
{ "_id" : ObjectId("56e916772acfbbf805612559"),
"name" : "topic1",
"topics" : [
{ "item" : ObjectId("56e916772acfbbf805612555"),
"comment" : "tag1",
"_id" : ObjectId("56e916772acfbbf80561255b") },
{ "item" : ObjectId("56e916772acfbbf805612556"),
"comment" : "tag2",
"_id" : ObjectId("56e916772acfbbf80561255c") } ]
}
返回
[ { name: 'topic1', _id: 56e916772acfbbf805612559 } ]