MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB sao chép một trường vào một bộ sưu tập khác bằng khóa ngoại

Có một số vấn đề với thiết lập thử nghiệm của bạn:

  • Trường hợp tên trường không khớp (bạn đang tham chiếu đến color thay vì Color khi sao chép)
  • Chỉ một trong các khóa ngoại mẫu phù hợp trong tập hợp đích:ObjectId('515f7db83f71d6bcb1c41a48')
  • Cập nhật của bạn sẽ chỉ ảnh hưởng đến tài liệu phù hợp đầu tiên cho "khóa ngoại". Điều này sẽ tốt cho mối quan hệ 1:1, nhưng không tốt cho mối quan hệ 1:nhiều

Một ví dụ đã sửa có tính đến những điều trên (trừ các khóa không khớp):

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
        );
    }
);

Kết quả là cài đặt {color:blue} cho khóa ngoại duy nhất thực sự khớp trong tài liệu mẫu:

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. Cấu hình MongoDB trên Windows

  2. $ và truy vấn không trả về kết quả

  3. Cách lấy số lần xuất hiện của một từ khóa bên trong một chuỗi bằng cách sử dụng mongoDb

  4. Làm thế nào để truy vấn phạm vi ngày trên bộ sưu tập MongoDB nơi ngày ISO được lưu trữ trong trường chuỗi?

  5. Không kết nối được Mongoose với Atlas