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

Mongoose - Tăng giá trị bên trong một mảng đối tượng

Không thể tăng trực tiếp giá trị trong .find truy vấn if labelOptions là một Mảng đối tượng. Để dễ dàng hơn, bạn nên thay đổi labelOptions nhập từ Mảng đối tượng sang Đối tượng:

"labelOptions": {
    "Bob": 112,
    "Billy": 32,
    "Joe": 45
};

Cũng nên xem xét sử dụng .findByIdAndUpdate thay vì .findOneAndUpdate nếu bạn đang truy vấn bằng _id của tài liệu . Và sau đó, bạn có thể đạt được những gì mình muốn bằng cách:

Poll.findByIdAndUpdate(
    id,
    {$inc: {`labelOptions.${labelOption}`: 1 }},
    function(err, document) {
    console.log(err);
});

CẬP NHẬT:Nếu bạn kiên trì sử dụng Mảng đối tượng cho labelOptions , có một cách giải quyết:

Poll.findById(
    id,
    function (err, _poll) {

        /** Temporarily store labelOptions in a new variable because we cannot directly modify the document */
        let _updatedLabelOptions = _poll.labelOptions;

        /** We need to iterate over the labelOptions array to check where Bob is */
        _updatedLabelOptions.forEach(function (_label) {

            /** Iterate over key,value of the current object */
           for (let _name in _label) {

               /** Make sure that the object really has a property _name */
               if (_label.hasOwnProperty(_name)) {

                   /** If name matches the person we want to increment, update it's value */
                   if (_name === labelOption) ++_label._name;
               }
           }
        });

        /** Update the documents labelOptions property with the temporary one we've created */
        _poll.update({labelOptions: _updatedLabelOptions}, function (err) {

            console.log(err);
        });
    });


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để phát trực tuyến Kết quả truy vấn MongoDB với nodejs?

  2. Với mongodb và guids cho Id của tài liệu, cách hiệu quả để lưu trữ Guids để dễ dàng truy xuất Hướng dẫn thực tế là gì?

  3. xác thực tùy chỉnh mongoose sử dụng 2 trường

  4. MongoDB - Kéo nhiều đối tượng từ một mảng

  5. cách chèn tài liệu nhúng bằng cách sử dụng dữ liệu mùa xuân mongodb mongotemplate