亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

多次使用位置`$`運算符來更新嵌套數組

多次使用位置`$`運算符來更新嵌套數組

慕后森 2019-11-20 09:40:33
這個問題與此密切相關,我將考慮在NoSQL上下文中有關架構設計的建議,但我很好奇這一點:實際問題假設您具有以下文檔:    _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的數組/文檔結構的更新方案中,可以多次使用MongoDB的位置$運算符(詳細信息),或者換句話說,使用不同的位置:{ <update operator>: { "paths.$.queries.$.requests" : value } }(不起作用)而不是“僅”能夠對頂級數組使用$ 一次,并且必須對“更高級別”的數組使用顯式索引:{ <update operator>: { "paths.$.queries.0.requests" : value } })(作品)如果可能的話,相應的R語法是什么樣的。在下面,您將找到一個可復制的示例。我試圖盡可能簡潔。代碼示例數據庫連接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)使用顯式位置索引更新嵌套數組(有效)這可行,但是它涉及第二級數組的顯式索引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 回答

  • 3 回答
  • 0 關注
  • 595 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號