如何在mongoDB中获取内部文档属性的值?

时间:2010-11-24 05:26:03

标签: java mongodb

我是mongoDB的新手。我在网络应用程序中使用mongoDB。

我想知道如何获取文档内部文档属性的值。

让我说我的JSON就像,

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

对于上面的json,我如何得到innerValue1innerValue1& innerValue2

我试过这个,但它不适合我!!!

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

任何建议都会很有意义!!!

由于

2 个答案:

答案 0 :(得分:2)

我找不到你。你需要在某个文档中获取值或设置或添加到集合中吗?

据我了解你在java中使用mongo db的一些驱动程序。我对java的mongo驱动程序没有经验。但我知道要在驱动程序或c#中执行此操作:

在c#mongo驱动程序中更新集合中的内部属性,您需要执行以下操作:

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

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

如果从上面的代码中查询重新调用一个文档 - 将更新来自Attr2集合的innerAttr1属性。如果我知道该查询返回多个文档,我需要更新一个文档,我使用这样的代码:

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

我相信java的mongo驱动程序中的逻辑相同。

希望得到这个帮助。

答案 1 :(得分:0)

由于答案没有发布,我刚刚找到答案,这里是

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

Credit转到stackoverflow上的另一篇文章。