2015-04-14 3 views
0

Это действительно сложно. Я хочу найти select nodes.index where radio.mac_address="00:06:5A:03:2E:5B". как я могу получить этот запрос в MongoDB с помощью java? Мой mongodb выглядит следующим образом.Как найти документ с mongoDB с помощью mongodb java в подвале массива документа?

enter image description here

Я попытался так много запросов. один из них заключается в следующем

BasicDBObject query = new BasicDBObject("nodes.radios.mac_address", "mac_address value"; 
BasicDBObject fields = new BasicDBObject("nodes.$", 1); 
DBCursor cursor = node_info.find(query, fields); 

Обновлено Первые удалось решить

Как я могу также написать запрос на обновление, как update rssiLocal="90" where mac_address="00:06:5A:03:2E:5B".

+1

Вы можете проверить эту работу запросов с вашей коллекции 'db.collectionName.find ({ "узлы": { "$ elemMatch": { "радио": { "$ elemMatch": { "mac_address" : "00: 06: 5A: 03: 2E: 5B"}}}}}, {"nodes. $. Index": 1}) ' – Yogesh

+0

Нет, давая мне пустой документ. –

+0

ОК, поэтому в этом случае вы должны использовать агрегирование монго http://docs.mongodb.org/ecosystem/tutorial/use-aggregation-framework-with-java-driver/ – Yogesh

ответ

0

В моем приложении я использую следующий метод. Он находит объект согласно заданному id, анализирует его через Gson и сохраняет его соответствующему объекту.

public MyEntity getValue(String id) { 
     DB db = SessionManager.getInstance().db; 
     DBCollection collection = db.getCollection("myCollection"); 
     BasicDBObject query = new BasicDBObject("_id", id); 
     Object object = new Object(); 
     boolean found = false; 

     DBCursor cursor = collection.find(query); 
     try { 
      while (cursor.hasNext()) { 
       found = true; 
       String str = (cursor.next().toString()); 
       Gson gson = new Gson(); 

       object = gson.fromJson(str, MyEntity.class); 

      } 
     } finally { 
      cursor.close(); 
     } 
     if (!found) 
      return new MyEntity(); 
     MyEntity myEntity = null; 
     myEntity = (MyEntity) object; 
     return myEntity; 
    } 
Смежные вопросы