I R mongolite bin mit in einer Mongo Sammlung mit folgenden Struktur lesen und schreiben:Wie aktualisiert man ein Array von Filialdokumenten mit 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}
]}]
für ein bestimmtes Dokument aus meiner Sammlung, mag ich jeden Standort einige Attribute hinzuzufügen. Zum Beispiel würde Ich mag das erste Dokument wie folgt aktualisieren:
{_id: 1, name: a, sites: [
{ref: site_a1, lat: 10, lng: 20},
{ref: site_a2, lat: 5, lng: 40}
]}
In mongolite, ich bin in der Lage, die Websites als Datenrahmen und berechnen die gewünschten Eigenschaften zu erhalten:
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
Aber ich kann nicht finde einen Weg, um meine Datenbank zu aktualisieren. Ich habe versucht:
db$update(query = '{"name": 1}',
update = paste0('{"$push":{"sites": {"$each":',jsonlite::toJSON(loc),'}}}'),
upsert = FALSE, multiple = FALSE)
, die wenig überraschend gibt mir:
{_id: 1, name: a, sites: [
{ref: site_a1},
{ref: site_a2},
{lat: 10, lng: 20},
{lat: 5, lng: 40}
]}
Gibt es eine Möglichkeit, die Websites Feld zu aktualisieren, indem Sie die neuen Attribute zu vorhandenen Elementen der arry Hinzufügen oder soll ich ersetzen die ganzen Websites Feld mit einer $set
? Danke für Ihre Hilfe.
Ich denke, dass mein Problem zu this question verbunden ist, so könnte ich über jedes Element meiner Array-Schleife haben ...