【发布时间】:2016-05-02 20:33:45
【问题描述】:
我有一个名为 assets 的集合,其中包含 2 种以上格式的文档,ParentObject 和 ChildObject。我目前正在通过两个查询将 ParentObject 与 ChildObject 相关联。这可以通过聚合查询来完成吗?
父对象
{
"_id" : {
"oid" : "ParentFooABC",
"brand" : "acme"
},
"type": "com.ParentClass",
"title": "Title1234",
"availableDate": Date,
"expirationDate": Date
}
子对象
{
"_id" : {
"oid" : "ChildFoo",
"brand" : "acme"
},
"type": "com.ChildClass",
"parentObject": "ParentFooABC",
"title": "Title1234",
"modelNumber": "8HE56",
"modelLine": "Metro",
"availableDate": Date,
"expirationDate": Date,
"IDRequired": true
}
目前我像这样过滤数据
val parent = db.asset.find(MongoDBObject("_id.brand": MongoDBObject($eq: "acme")),MongoDBObject("type":"com.ParentClass"))
val children = db.asset.find(MongoDBObject("_id.brand": MongoDBObject($eq: "acme")),MongoDBObject("type":"com.ChildClass"), MongoDBObject("parentObject": "${parent._id.oid}"))
if(childs.nonEmpty) {
//I have confirmed this parent has a child associated and should be returned
val childModelNumbers = childs.map(child -> child.modelNumber)
val response = ResponseObject(parent, childModelNumbers)
}
我可以在聚合查询中执行此操作吗?
更新:
Mongo 版本:db 版本 v2.6.11
语言:斯卡拉
驱动程序:Casbah 2.8.1
【问题讨论】: