我正在尝试运行聚合查询,以尝试展开嵌套在键customFields下的数组。
结构就是这样
override func viewDidLoad() {
...
// assign directly to instance property, don't use local variable
wk = WKWebView(frame: .zero, configuration: config)
view.addSubview(wk)
}
customField是字符串类型Object的Map。当我尝试放松 note.customFields.externalAttendees 时,出现错误 未找到对象类型的属性externalAttendees!遍历的路径:Activity.note.customFields。
另一方面,如果我在字段上展开,该字段是诸如List之类的具体对象的数组,其中User类将email和epp作为实例变量,那么我不会遇到任何异常。
有什么方法可以解开不是bean的一部分但可以在文档中使用的动态键。
我正在使用springMongoData数据库聚合。
答案 0 :(得分:0)
类似的文档结构应具有完全相同的java表示形式。就我而言,要分组的externalAttendees是Map的一部分,而不是bean的实例变量。
我尝试了MongoTemplate的executeCommand(BasicDBObject.parse(stringJson))并解决了这个问题。
我的stringJson看起来像
{ "aggregate" : "__collection__" , "pipeline" : [ { "$match" : { "note.customFields.externalAttendees" : { "$exists" : true}}} , { "$match" : { "note.customFields.externalAttendees.name" : { "$in" : [ "x" , "y"]}}} , { "$sort" : { "createdDate" : -1}} , { "$unwind" : "$note.customFields.externalAttendees"} , { "$project" : { "id" : 1 , "emailId" : "$note.customFields.externalAttendees.name" , "aType" : "$note.type" , "subject" : "$note.subject"}} , { "$group" : { "_id" : "$emailId" , "type" : { "$first" : "$aType"} , "subject" : { "$first" : "$subject"}}}],"cursor": {"batchSize":10}}