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

'nâng cấp' trong một tài liệu nhúng

Bạn có thể sử dụng $ addToSet để thêm vào một tập hợp để đảm bảo rằng không có phần tử mảng nào trùng lặp, nhưng điều đó sẽ không hiệu quả đối với trường hợp "đang cập nhật" của bạn.

Để làm những gì bạn muốn, bạn sẽ cần phải thay đổi cấu trúc dữ liệu của mình thành một cái gì đó như:

{
    "_id" : ObjectId("4f9519d6684c8b1c9e72e367"),
    "component_id" : 1,
    "_locales" : {
        "nl_NL" : {
            "url" : "dutch"
        }
    }
}

Giờ đây, bạn có thể cập nhật ngôn ngữ nl_NL chỉ với:

db.components.update( { component_id: 1 }, { $set: { '_locales.nl_NL.url' : 'new url' } }, true );

Và một ngôn ngữ mới cũng sẽ hoạt động, chẳng hạn như với:

db.components.update( { component_id: 1 }, { $set: { '_locales.en_US.url' : 'American' } }, true );

Bạn cũng có thể muốn xem xét việc đặt ngôn ngữ như một phần của đối tượng lồng nhau, chẳng hạn như trong:

{
    "_id" : ObjectId("4f9519d6684c8b1c9e72e367"),
    "component_id" : 1,
    "_locales" : {
        "nl_NL" : {
            "url" : "dutch"
            "locale" : "nl_NL"                 
        }
    }
}

Điều này giúp truy xuất dữ liệu dễ dàng hơn trong một số trường hợp.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $ hàng tuầnUpdate # 66 (ngày 22 tháng 4 năm 2022):Hackathons, mongosh và Github

  2. Chỉ mục một phần trong mongodb / mongoose

  3. Cài đặt MongoDB trên CentOS 7

  4. tiếp tục trong cursor.forEach ()

  5. Làm cách nào để thực hiện phép nối SQL tương đương trong MongoDB?