请帮我在这个复杂的mongodb查询。 我有一个XYZ收集文件记录为:Mongodb自加入添加字段之前显示(非常困难)也与java
{ key1:value1,
key2:value2,
key3:{
docid:c78dfdfdf,
filename: "c78dfdfdf.xml"
}
}
{ key1:value1,
key2:value2,
key3:{
docid:c7j9fdfdf,
filename: "c7j9fdfdf.xml"
}
}
{ key1:value1,
key2:value2,
key3:{
docid:c7j9fdfdf,
filename: "c7j9fdfdf.gif"
}
}
{ key1:value1,
key2:value2,
key3:{
docid:c7j9fdfdf,
filename: "c7j9fdfdf.jpg"
}
}
出于某种原因,这种结构不能改变。 现在我想发起一个查询,并获取所有记录与docid +“。xml”作为文件名,如第1条和第2条记录在这里,如果有任何其他具有相同docid的文档存在,它应该在所有结果中追加hasAttachment:“true”包含文件名为docid +任何其他扩展名,否则hasAttachment:“false”。对于例如查询应返回的没有更新只选择查询:
{ key1:value1,
key2:value2,
key3:{
docid:c78dfdfdf,
filename: "c78dfdfdf.xml"
},
hasAttachment:"false"
}
{ key1:value1,
key2:value2,
key3:{
docid:c7j9fdfdf,
filename: "c7j9fdfdf.xml"
},
hasAttachment:"true"
}
我需要查询和蒙戈的Java驱动程序代码来执行相同的操作。
首先,我想查询文件名= docid +“。xml”的所有文档,然后通过检查是否存在docid +非xml扩展名来添加hasAttachment = true/false。 感谢 尼廷
能否请你加你已经尝试过什么已经使我们能够更有效地帮助吗? – WiredPrairie
它需要聚合框架,我是一个初学者,我能够像db.XYZ.find({$其中:函数(){if(this.key3.fileName == this.key3.docid +“。xml” )返回false;否则返回true;}})。pretty()这是给我那些文件扩展名不是xml的文件 – nitinjaiswal
但是我想在像foreach/aggregation这样的循环内运行所有的.xml扩展名文件名并添加如果在返回结果之前存在相同docid的其他扩展名文件,则hasAttachment = true – nitinjaiswal