我已经阅读了很多关于在 Java 编程中使用 MongoDB 并在其中查找嵌套对象的主题。不幸的是,我没有找到我的问题的答案。我有一个从 Open Street Map 导入的数据库。它包含许多不同的节点。我已经为 id 进行了全文搜索并且它可以工作,但我必须有另一种搜索算法,它只能找到城市和村庄。findOne
如果用户只输入一个单词,我认为当我使用“名称”搜索方法时它可能会起作用。
这是我的数据库示例,这是一条记录:
> db.nodes.findOne() {
"_id" : NumberLong(23658160),
"loc" : [
53.9475385,
14.1787832
],
"ch" : NumberLong(12846175),
"ts" : "2012-08-24T15:07:41Z",
"un" : "HHT",
"ui" : NumberLong(498475),
"v" : 9,
"tg" : [
[
"addr:city",
"Heringsdorf"
],
[
"addr:housenumber",
"7-9"
],
[
"addr:postcode",
"17424"
],
[
"addr:street",
"Puschkinstraße"
],
[
"name",
"Jugendherberge Heringsdorf"
],
[
"tourism",
"hostel"
],
[
"wheelchair",
"yes"
]
],
"ky" : [
"addr:city",
"addr:housenumber",
"addr:postcode",
"addr:street",
"name",
"tourism",
"wheelchair"
] }
这是我的代码,它不起作用。
if (reqTab.length == 1 && req.getHowMany() <= 1)
{
cmd.put("nodes.tg.name", reqTab[0]);
DBObject resultTemp = coll.findOne(cmd);
System.out.println(resultTemp); //here it shows null
json = gson.toJson(resultTemp);
}
else
{ //here it's all working!
cmd.put("text", "nodes");
cmd.put("search", req.getWhatToSearch());
cmd.put("limit", req.getHowMany());
result = db.command(cmd);
json = gson.toJson(result);
}
return json;
它总是放空,我不知道如何进入这个按名称查找记录。请帮忙。