【发布时间】:2015-07-17 21:28:02
【问题描述】:
我是 mongodb 的新手,还在学习它,所以我的问题可能很幼稚,所以请耐心等待 :) 我在 mongodb 中只有一个 json 对象,看起来像这样。
json 对象
{
"URLStore": [
{
"description": "adf description",
"url": "www.adf.com"
},
{
"description": "pqr description",
"url": "www.pqr.com"
},
{
"description": "adf description",
"url": "www.adf.com"
}
]
}
我需要查询与给定输入匹配的 url 的描述。例如这里 www.adf.com 。我有一个查询 mongodb 的代码
mongodb 查询
BasicDBObject whereQuery = new BasicDBObject();
whereQuery.put("URLStore.url","www.pqr.com");
BasicDBObject fields=new BasicDBObject("URLStore.description", "");
cursor = collection.find(whereQuery,fields);
但结果类似于
{ "_id": { "$oid": "554b4046e4b072dd9deaf277" }, "URLStore": [ { "description": "pqr description" }, { "description": "adf description" }, { "description": "adf description" } ] }
实际上只有 1 个描述应该返回,因为匹配对象与键 www.pqr.com 只有一个。我的查询有什么问题?我在这里遗漏了什么?
我已经尝试过问题Retrieve only the queried element in an object array in MongoDB collection,但使用提到的解决方案只会返回一个对象/第一个匹配项
【问题讨论】:
-
@ Famousgarkin 是的,我试过了,但它只返回第一个匹配的元素。因此,如果我将查询更改为其他内容并且如果对象有多个匹配项,那么它将返回第一个匹配的对象
-
同意,接受的解决方案不是很有用。查看其他的通用解决方案,例如使用带有
$unwind或$redact的聚合框架。
标签: mongodb mongodb-query mongodb-java