我是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);
任何建议都会很有意义!!!
由于
答案 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上的另一篇文章。