【发布时间】:2018-08-23 20:10:03
【问题描述】:
我对 MongoDB 很陌生,并且正在我的 Java 项目中使用它。
我的收藏中有以下文档结构:
{
"_id":"ProcessX",
"tasks":[
{
"taskName":"TaskX",
"taskTime":"2018-08-09T13:38:58.317Z",
"crawledList":[
"http://dbpedia.org/ontology/birthYear"
]
},
{
"taskName":"TaskX",
"taskTime":"2018-08-10T06:19:32.006Z",
"crawledList":[
"http://dbpedia.org/ontology/birthYear",
"http://dbpedia.org/page/Mo_Chua_of_Balla"
]
},
{
"taskName":"TaskY",
"taskTime":"2018-08-10T06:21:58.737Z",
"crawledList":[
"http://dbpedia.org/page/Mo_Chua_of_Balla"
]
}
]
}
如果“newURI”不存在,我想将它放入任务的 crawledList 中。流程如下:
- 使用 _id = "someProcessName" 查找流程文档
- 在 tasks 数组中找到 taskName = "someTaskName" 和 taskTime = "someTaskTime" 的任务文档
- 检查该任务文档的 crawledList 中是否存在“newURI”
- 如果不存在,则将newURI插入到任务文档的crawledList中
我不想将文档检索到内存中并使用原始 Java 类型(列表等)。您能帮助我使用 MongoDB 的 Java 驱动程序命令编写最有效的代码吗?
我没有定义任何索引,因为我不知道应该定义哪些索引。 如果有更好的方法来表示它们并更快地执行此操作,我还可以更改文档结构。
提前谢谢你。
【问题讨论】: