我有一个类似于下面的架构:
var mongoose = require('mongoose');
module.exports = mongoose.model('Owner',{
username: String,
blocks: {type:mongoose.Schema.Types.ObjectId, ref: 'Block'},
});
我正在尝试运行一个查询,以查看Owner是否有对Block的id的引用。 Owner具有ObjectId数组。当我运行db.owners.aggregate({$match:{username:'example'}},{$unwind:“$ blocks”},{$project:{_id:1,blocks:1}})
时,它返回:
{ "_id" : ObjectId("550d9dc64d9dc3d026fadfc7"), "blocks" : ObjectId("550dc117dc9605ab27070af7") }
{ "_id" : ObjectId("550d9dc64d9dc3d026fadfc7"), "blocks" : ObjectId("550dc123dc9605ab27070af8") }
{ "_id" : ObjectId("550d9dc64d9dc3d026fadfc7"), "blocks" : ObjectId("550dc12edc9605ab27070af9") }
{ "_id" : ObjectId("550d9dc64d9dc3d026fadfc7"), "blocks" : ObjectId("550dc157dc9605ab27070afa") }
我该如何匹配块id?我尝试过db.publishers.aggregate({$match:{username:'example'}}, {$unwind:“$blocks”},{$project:{_id:1,blocks:1}},{$match:{"blocks._id":'550dc157dc9605ab27070afa'}})
,但是这似乎没有起作用。
.aggregation
和.find
引用它,如ObjectId('550dc157dc9605ab27070afa')所示。在找到此链接https://github.com/LearnBoost/mongoose/issues/1399之后,我发现了这一点。不确定为什么我要使用聚合框架。我一直在使用它处理具有子文档的内容。 - jordannew ObjectId()
来处理字符串。 - Gergo Erdosi