JavaプログラミングでMongoDBを使用し、ネストされたオブジェクトを見つけることに関する多くのトピックを読みました。残念ながら、私の質問に対する答えは見つかりませんでした。Open Street Map からインポートされたデータベースがあります。多くの異なるノードが含まれています。ID 全文検索を作成しましたが、機能しますが、都市と村のみを検索する別の検索アルゴリズムが必要です。findOne
ユーザーが単語を1つだけ入力する場合、「名前」で検索する方法を使用するとうまくいくかもしれないと思いました。
これが私のデータベースのサンプルです。これは 1 つのレコードです。
> 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;
それは常にnullになります。名前でレコードを見つけるためにこれに入る方法がわかりません。助けてください。