Ich habe diese Struktur:Wie kann ich eine innere Eigenschaft mit dem 10gen C# -Treiber aktualisieren?
public class User
{
public ObjectId Id { get; set; }
public Location Location { get; set; }
public DateTime LastAround {get;set;}
}
public class Location
{
public double Latitude { get; set; }
public double Longitude { get; set; }
}
ich ein paar Dinge ausprobiert habe, aber ich will User Lage aktualisieren, und wenn sie wurden zuletzt um.
dies versucht:
userHelper.Collection.Update(
Query.EQ("_id", userId),
Update.SetWrapped<Location>("Location", new Location { Latitude = latitude, Longitude = longitude }).Set("LastAround", DateTime.UtcNow));
und diese:
userHelper.Collection.Update(
Query.EQ("_id", userId),
Update.Set("Location.Latitude", latitude)
.Set("Location.Longitude", longitude)
.Set("LastAround", DateTime.UtcNow));
nichts funktioniert ... wie kann ich das tun?
-Update 17.04:
userHelper.Collection.Update(
Query.EQ("_id", new ObjectId(userId)),
Update
.SetWrapped<Location>("Location", new Location { Longitude = longitude, Latitude = latitude })
.Set("LastAround", DateTime.UtcNow)
);
Der lng und lat Wert Aufträge scheinen sehr wichtig zu sein, wenn Abfragen auf ihnen zu tun. Ich habe eine Geonear-Abfrage gemacht und einen seltsamen Fehler außerhalb der Grenzen bekommen. Wenn Sie in der falschen Reihenfolge aktualisieren, werden zuerst Lats und dann der Fehler angezeigt.
Komisch, ich habe keine Ahnung, warum meine nicht funktionierte. Ich habe gelernt, obwohl die für Geo-Abfragen die lat und lng müssen Positionen zu wechseln mit dem lng zuerst. – rball