這個(gè)問(wèn)題與此密切相關(guān),我將考慮在NoSQL上下文中有關(guān)架構(gòu)設(shè)計(jì)的建議,但我很好奇這一點(diǎn):實(shí)際問(wèn)題假設(shè)您具有以下文檔: _id : 2 abcd name : 2 unittest.com paths : 4 0 : 3 path : 2 home queries : 4 0 : 3 name : 2 query1 url : 2 www.unittest.com/home?query1 requests: 4 1 : 3 name : 2 query2 url : 2 www.unittest.com/home?query2 requests: 4基本上,我想知道如果在涉及“嵌套度”大于1的數(shù)組/文檔結(jié)構(gòu)的更新方案中,可以多次使用MongoDB的位置$運(yùn)算符(詳細(xì)信息),或者換句話(huà)說(shuō),使用不同的位置:{ <update operator>: { "paths.$.queries.$.requests" : value } }(不起作用)而不是“僅”能夠?qū)敿?jí)數(shù)組使用$ 一次,并且必須對(duì)“更高級(jí)別”的數(shù)組使用顯式索引:{ <update operator>: { "paths.$.queries.0.requests" : value } })(作品)如果可能的話(huà),相應(yīng)的R語(yǔ)法是什么樣的。在下面,您將找到一個(gè)可復(fù)制的示例。我試圖盡可能簡(jiǎn)潔。代碼示例數(shù)據(jù)庫(kù)連接require("rmongodb")db <- "__unittest" ns <- paste(db, "hosts", sep=".")# CONNCETION OBJECTcon <- mongo.create(db=db)# ENSURE EMPTY DBmongo.remove(mongo=con, ns=ns)范例文件q <- list("_id"="abcd")b <- list("_id"="abcd", name="unittest.com")mongo.insert(mongo=con, ns=ns, b=b)q <- list("_id"="abcd")b <- list("$push"=list(paths=list(path="home")))mongo.update(mongo=con, ns, criteria=q, objNew=b)q <- list("_id"="abcd", paths.path="home")b <- list("$push"=list("paths.$.queries"=list( name="query1", url="www.unittest.com/home?query1")))mongo.update(mongo=con, ns, criteria=q, objNew=b)b <- list("$push"=list("paths.$.queries"=list( name="query2", url="www.unittest.com/home?query2")))mongo.update(mongo=con, ns, criteria=q, objNew=b)使用顯式位置索引更新嵌套數(shù)組(有效)這可行,但是它涉及第二級(jí)數(shù)組的顯式索引queries(嵌套在array 的subdoc元素中paths):q <- list("_id"="abcd", paths.path="home", paths.queries.name="query1")b <- list("$push"=list("paths.$.queries.0.requests"=list(time="2013-02-13")))> mongo.bson.from.list(b) $push : 3 paths.$.queries.0.requests : 3 time : 2 2013-02-13mongo.update(mongo=con, ns, criteria=q, objNew=b)res <- mongo.find.one(mongo=con, ns=ns, query=q)
- 3 回答
- 0 關(guān)注
- 578 瀏覽
添加回答
舉報(bào)
0/150
提交
取消