Как получить значения внутреннего атрибута документа в mongoDB? - PullRequest
3 голосов
/ 24 ноября 2010

Я новичок в mongoDB. Я использую mongoDB в веб-приложении.

Я хочу знать, как получить значение атрибута внутреннего документа документа.

Допустим, мой JSON похож на

{ "_id" : { "$oid" : "4ceb753a70fdf877ef5113ca"}, "Attrr1" : "value1", "Attr2": {"innerAttr1":"innerValue1", "innerAttr2":"innerValue2"}, "Attr3" : { "innerAttr3" : "innerValue3", "innerAttr4" : "innerValue4"} }

Для вышеуказанного JSON, как я могу получить innerValue1 и оба innerValue1 & innerValue2.

Я пробовал это, но у меня не работает !!!

BasicDBObject innerQuery = new BasicDBObject();
field.put("Attr2.innerAttr1", 1);

Любые предложения будут благодарны !!!

Спасибо

Ответы [ 2 ]

2 голосов
/ 04 декабря 2010

Я не понимаю тебя.Вам нужно получить значение или установить или добавить в коллекцию внутри какого-то документа?

Как я понимаю, вы используете какой-то драйвер для dong монго в java.Я не опытный водитель монго для Java.Но я знаю, как это сделать в драйвере или c #:

в драйвере c # mongo для обновления внутреннего свойства в коллекции, вам нужно сделать следующее:

var query = Query.Eq("_id", documentId);
var update = Update.Set("Attr2.innerAttr1",1);

MongoDb.Database.GetCollection("collectionName").Update(query, update);

, если запрос из приведенного выше кода повторяет один документ- свойство innerAttr1 из коллекции Attr2 будет обновлено.Если я знаю, что запрос возвращает более одного документа, и мне нужно обновить более одного документа, я использую такой код:

MongoDb.Database.GetCollection("collectionName").Update(query, update, UpdateFlag.Multi);

Я верю, что та же логика в драйвере Монго для Java.

Надеюсь, что это поможет.

0 голосов
/ 29 августа 2012

Поскольку ответ не был опубликован, и я только что нашел ответ, вот он

(BasicDBObject)(query.get("Attr2")).getString("InnerAttr1") 
where query = (BasicDBObject) cursor.next()

Кредит переходит к другому сообщению в stackoverflow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...