MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Aktualizowanie zagnieżdżonej mangusty tablicowej

Możesz przemyśleć swój model danych. Jak to jest obecnie, nie możesz osiągnąć tego, czego chcesz. Pole sensorów odnosi się do tablicy. W idealnym formacie dokumentu, który podałeś, wewnątrz tej tablicy znajduje się pojedynczy obiekt. Następnie wewnątrz tego obiektu masz dwa pola z dokładnie tym samym kluczem. W obiekcie JSON lub dokumencie mongo w tym kontekście nie możesz mieć zduplikowanych kluczy w tym samym obiekcie.

Nie jest jasne, czego dokładnie szukasz, ale być może najlepiej byłoby wybrać coś takiego:

{
"_id" : "Manasa",
"name" : "Manasa Sub",
"sensors" : [ 
    {
    "sensor_name" : "ras",
    "_id" : ObjectId("57da0a4bf3884d1fb2234c74"),
    "measurements" : [ 
        {
            "time" : "8:00"
        },
        {
            "time" : "9:00"
        }
    ]
},
{
    // next sensor in the sensors array with similar format
    "_id": "",
    "name": "",
    "measurements": []
}],
}

Jeśli tego chcesz, możesz spróbować tego:

User.findOneAndUpdate(
    {  _id:req.body._id "sensors.sensor_name": req.body.sensor_name },
    { $push: { "sensors.0.measurements": { "time": req.body.time } } }
);

Na marginesie, jeśli zamierzasz przechowywać tylko jeden ciąg w każdym obiekcie w tablicy pomiarów, możesz po prostu przechowywać rzeczywiste wartości zamiast całego obiektu { time: "value" } . Może się okazać, że w ten sposób łatwiej będzie się z tymi danymi obsłużyć.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb foreach dla kolekcji zagnieżdżonej w celu aktualizacji/kopiowania dokumentów do innej kolekcji

  2. Jak skonfigurować MongoMapper i ActiveRecord w tym samym projekcie Ruby Rails?

  3. Agregacja MongoDB ze sterownikiem Java

  4. Konwertuj warunki zapytania JSON na operacje MongoDB/Mongoose

  5. MongoTemplate Zapytanie o kryteria