1
我,使用R mongolite讀取和一個蒙戈集合結構如下寫:如何用R mongolite更新子文檔數組?
[{_id: 1, name: a, sites: [
{ref: site_a1},
{ref: site_a2}
]},
{_id: 2, name: b, sites: [
{ref: site_b1},
{ref: site_b2}
]},
{_id: 3, name: c, sites: [
{ref: site_c1},
{ref: site_c2},
{ref: site_c3},
{ref: site_c4}
]}]
對於我收藏的一個給定的文檔,我想一些屬性添加到每個站點。例如,我想更新的頭文件是這樣的:
{_id: 1, name: a, sites: [
{ref: site_a1, lat: 10, lng: 20},
{ref: site_a2, lat: 5, lng: 40}
]}
在mongolite,我能夠得到網站的數據幀,並計算所需的屬性:
sites <- db$find(query = '{"name": 1}',
fields='{"_id": 0, "name": 0}')$sites[[1]]
loc <- getLatLng(sites)
# loc is a dataframe with lat and lng for each site
但我不能找到一種方法來更新我的分貝。我曾嘗試:
db$update(query = '{"name": 1}',
update = paste0('{"$push":{"sites": {"$each":',jsonlite::toJSON(loc),'}}}'),
upsert = FALSE, multiple = FALSE)
這並不奇怪給我:
{_id: 1, name: a, sites: [
{ref: site_a1},
{ref: site_a2},
{lat: 10, lng: 20},
{lat: 5, lng: 40}
]}
有沒有辦法通過增加新屬性到ARRY的現有元素來更新網站領域,或者我應該更換整個網站字段有$set
?謝謝你的幫助。
我想,我的問題是與this question,所以我可能要遍歷我數組的每個元素...