Запись запроса и обновления mongoDB в Java.MongoDB: запрос для поддокументов: Java
MongoDB Collection (Имя: сниженный) результат (карта-свертка результата) выглядит следующим образом:
Значение поле:
{ "value" :
{
"User_Name" : "Mitchamoreagent",
"tweets" : ["RT Perspectives:
Texas Insurer of Last Resort Charts Course Through Reform Law", "RT Texas sale
s tax-free weekend set for Aug. 19-21", "RT The New Normal: Billion-Dollar", "R
T Austin Water is responding to a 12-inch water main leak at Burnet Rd. and And
erson Lane in North Austin."]
}
}
Пытается найти все User_Name, чьи твиты содержат 'word', которое я могу указать с помощью regex.
Для этого я попробовал AggregationOutput, который отлично работает с простыми корпусами. Но эта структура, я не могу ее преодолеть.
Код:
DBObject match = new BasicDBObject("$match",new BasicDBObject("value",new BasicDBObject("tweets", new BasicDBObject("$regex",".*Texas.*"))));
DBObject fields = new BasicDBObject("_id", 0);
DBObject nest = new BasicDBObject("value", new BasicDBObject("User_ID", 1));
fields.put("value", 1);
DBObject project = new BasicDBObject("$project", fields);
AggregationOutput output = tweets.aggregate(match, project);
Вот Техас "является слово, которое я пытаюсь найти, и я ожидаю выходного [Mitchamoreagent].
Но выход всегда есть исключение noRowsReturned.
Вы можете также сказать мне, как следует «проект» должен выглядеть, если я только хочу «имя_пользователя» из результата. Поскольку я использую AggregationOutput output = tweets.aggregate (match, project); – rakemen
Можете ли вы объяснить это «$ value.User_Name» в fields.put() – rakemen
col.aggregate (match, project); «Col» в stmt, должно ли это быть именем всей коллекции? или это должно быть твиты, так как мы сопоставляем слово с твитами. Он по-прежнему дает мне пустой o/p, хотя я вижу значение через запрос в оболочке mongoDB. – rakemen