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

MongoDB kopiuje pole do innej kolekcji za pomocą klucza obcego

Istnieje kilka problemów z konfiguracją testu:

  • Wielkość liter w nazwach pól nie pasuje (odwołujesz się do color zamiast Color podczas kopiowania)
  • Tylko jeden z przykładowych kluczy obcych pasuje do kolekcji docelowej:ObjectId('515f7db83f71d6bcb1c41a48')
  • Twoja aktualizacja wpłynie tylko na pierwszy pasujący dokument dla „klucza obcego”. Byłoby to w porządku w przypadku relacji 1:1, ale nie 1:wielu

Poprawiony przykład uwzględniający powyższe (poza niepasującymi kluczami):

db.test1.User.find().forEach( 
    function(x) {
        db.test2.Car.update(
            // query 
            { userID: x._id },

            // update 
            { $set: { color: x.Color} },

            // options:
            { "multi" : true } // Update all matching documents
        );
    }
);

Co powoduje ustawienie {color:blue} dla jedynego klucza obcego, który faktycznie pasuje w przykładowych dokumentach:

db.test2.Car.find()
{
    "_id" : ObjectId("515f84883f71d6bcb1c41a55"),
    "speed" : 202,
    "userID" : ObjectId("515f7db83f71d6bcb1c41a49")
}
{
    "_id" : ObjectId("515f84883f71d6bcb1c41a56"),
    "speed" : 193,
    "userID" : ObjectId("515f7db83f71d6bcb1c41a4a")
}
{
    "_id" : ObjectId("515f84883f71d6bcb1c41a54"),
    "color" : "blue",
    "speed" : 291,
    "userID" : ObjectId("515f7db83f71d6bcb1c41a48")
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Czy istnieje równoważne narzędzie, takie jak profiler sql dla mongodb?

  2. MongoDB $atan2

  3. Niemożliwe tworzenie użytkowników (lub niestandardowych ról) w Mongo na serwerze NodeJS

  4. MongoError:nazwy baz danych nie mogą zawierać znaku „ ” podczas korzystania z mongoosejs łączą się z mLab

  5. Uzyskiwanie różnicy w sekundach od dwóch dat w JavaScript