2011-09-26 12 views
8

Tôi bắt đầu với mongoDB và mongoose. Tôi đã tự hỏi cách mọi người quản lý các lược đồ phát triển . Ví dụ nếu tôi bắt đầu với một sơ đồ như thế này:Thay đổi các lược đồ trong mongoDB/mongoose

user_ID : 123, 
user_firstName : 'bob', 
user_lastName : 'smith' 

Và phát triển nó một cái gì đó như thế này:

user_ID: 123, 
user_name: [first:'bob', last:'smith'] 

Làm thế nào tôi có thể cập nhật hoặc quản lý hồ sơ cũ mà đã được thiết lập bằng cách sử dụng thiết kế giản đồ cũ ?

Trả lời

11

Một cách tiếp cận để di chuyển lược đồ tài liệu liên quan đến chuyển đổi dữ liệu đơn giản sẽ là sử dụng $exists để tìm tài liệu thiếu trường mới và di chuyển chúng.

Ví dụ, chuyển firstName và lastName vào một lĩnh vực user_name mới:

db.mycollection.find({ user_name : { $exists : false } }).forEach(
    function (doc) { 
     doc.user_name = {'first': doc.user_firstName, 'last': doc.user_lastName}; 

     // Remove old properties 
     delete doc.user_firstName; 
     delete doc.user_lastName; 

     // Save the updated document 
     db.mycollection.save(doc); 
    } 
) 

với số lượng chuyển phức tạp hơn một số công cụ có thể rất hữu ích là: