Hướng dẫn how to add new field to existing document in mongodb using node js - cách thêm trường mới vào tài liệu hiện có trong mongodb bằng cách sử dụng nút js

15

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang cố cập nhật một tài liệu MongoDB với Mongoose trong Node.js

Khi trường tồn tại, bản cập nhật hoạt động, nhưng nếu trường không tồn tại, bản cập nhật sẽ không hoạt động.

Tôi muốn thêm các trường mới vào tài liệu.

Truy vấn MongoDB ($ set) đang hoạt động:

db.getCollection('users').update({ 'uid': 'uid' }, { $set: { 'vehicle_status': 'bike' } })  

Nhưng nó sẽ không hoạt động khi được thực hiện trong Mongoose. Sử dụng $ set không thêm một trường.

User.update({ uid: uid }, { $set: { vehicle_status: vehicleSatus } }, { multi: true })

Hướng dẫn how to add new field to existing document in mongodb using node js - cách thêm trường mới vào tài liệu hiện có trong mongodb bằng cách sử dụng nút js

hỏi ngày 9 tháng 2 năm 2017 lúc 2:48Feb 9, 2017 at 2:48

Hướng dẫn how to add new field to existing document in mongodb using node js - cách thêm trường mới vào tài liệu hiện có trong mongodb bằng cách sử dụng nút js

2

Hãy thử mã sau:

User.updateOne(
     {uid: 'uid'}, 
     {vehicle_status : 'vehicleSatus' },
     {multi:true}, 
       function(err, numberAffected){  
       });

Ngoài ra, hãy chắc chắn rằng bạn thêm xe_status vào lược đồ.

Đã trả lời ngày 9 tháng 2 năm 2017 lúc 3:09Feb 9, 2017 at 3:09

Hướng dẫn how to add new field to existing document in mongodb using node js - cách thêm trường mới vào tài liệu hiện có trong mongodb bằng cách sử dụng nút js

Tim timTim

1.54412 Huy hiệu bạc26 Huy hiệu đồng12 silver badges26 bronze badges

7

Trải qua giải pháp này trong năm 2019.

Xin lưu ý:

User.update({ uid: uid }, { $set: { vehicle_status: vehicleSatus } }, { multi: true })
1 không được chấp nhận. Sử dụng
User.update({ uid: uid }, { $set: { vehicle_status: vehicleSatus } }, { multi: true })
2,
User.update({ uid: uid }, { $set: { vehicle_status: vehicleSatus } }, { multi: true })
3 hoặc
User.update({ uid: uid }, { $set: { vehicle_status: vehicleSatus } }, { multi: true })
4 thay thế

SLFAN

8.805115 Huy hiệu vàng65 Huy hiệu bạc77 Huy hiệu đồng115 gold badges65 silver badges77 bronze badges

Đã trả lời ngày 4 tháng 8 năm 2019 lúc 19:43Aug 4, 2019 at 19:43

Hướng dẫn how to add new field to existing document in mongodb using node js - cách thêm trường mới vào tài liệu hiện có trong mongodb bằng cách sử dụng nút js

Shu.TShu.TShu.T

3594 Huy hiệu bạc10 Huy hiệu Đồng4 silver badges10 bronze badges

Theo kịch bản mới luôn sử dụng {upsert: true}.upsert:true}.

UPSERT - Nếu được đặt thành True và không có bản ghi nào phù hợp với truy vấn, đối tượng thay thế được chèn dưới dạng bản ghi mới.

   user.updateOne(
                 { email: req.body.email },
                 { $set: { name: 'Aaakash'}},{upsert:true}).then((result, err) => {
                    return res.status(200).json({ data: result, message:"Value Updated" });
                })

Đã trả lời ngày 29 tháng 12 năm 2019 lúc 11:29Dec 29, 2019 at 11:29

Hướng dẫn how to add new field to existing document in mongodb using node js - cách thêm trường mới vào tài liệu hiện có trong mongodb bằng cách sử dụng nút js

1

Tài liệu về nhà → node.jsNode.js

Bạn có thể thay đổi tài liệu trong bộ sưu tập MongoDB bằng hai loại hoạt động riêng biệt: Cập nhật và thay thế. Cập nhật các hoạt động đột biến các trường được chỉ định trong một hoặc nhiều tài liệu và để lại các trường và giá trị khác không thay đổi. Thay thế các hoạt động xóa tất cả các trường hiện có trong một hoặc nhiều tài liệu và thay thế chúng bằng các trường và giá trị được chỉ định.update and replace. Update operations mutate specified fields in one or more documents and leave other fields and values unchanged. Replace operations remove all existing fields in one or more documents and substitute them with specified fields and values.

Để thực hiện cập nhật một hoặc nhiều tài liệu, hãy tạo một tài liệu cập nhật chỉ định toán tử cập nhật (loại cập nhật để thực hiện) và các trường và giá trị mô tả sự thay đổi. Cập nhật tài liệu sử dụng định dạng sau:update document that specifies the update operator (the type of update to perform) and the fields and values that describe the change. Update documents use the following format:

{
: {
: {
...
},
: {
}
},
: {
...
}
}

Cấp độ cao nhất của tài liệu cập nhật chứa một hoặc nhiều nhà khai thác cập nhật sau:

  • User.update({ uid: uid }, { $set: { vehicle_status: vehicleSatus } }, { multi: true })
    
    5 - Thay thế giá trị của trường bằng một trường được chỉ định

  • User.update({ uid: uid }, { $set: { vehicle_status: vehicleSatus } }, { multi: true })
    
    6 - Giá trị trường gia tăng hoặc giảm

  • User.update({ uid: uid }, { $set: { vehicle_status: vehicleSatus } }, { multi: true })
    
    7 - Đổi tên các trường

  • User.update({ uid: uid }, { $set: { vehicle_status: vehicleSatus } }, { multi: true })
    
    8 - Xóa các trường

  • User.update({ uid: uid }, { $set: { vehicle_status: vehicleSatus } }, { multi: true })
    
    9 - Nhân giá trị trường với một số được chỉ định

Xem Hướng dẫn sử dụng máy chủ MongoDB để biết danh sách đầy đủ các nhà khai thác cập nhật và cách sử dụng của chúng.complete list of update operators and their usage.

Các nhà khai thác cập nhật chỉ áp dụng cho các trường được liên kết với chúng trong tài liệu cập nhật của bạn.

Ghi chú

Các đường ống tổng hợp trong hoạt động cập nhật

Nếu bạn đang sử dụng MongoDB phiên bản 4.2 trở lên, bạn có thể sử dụng các đường ống tổng hợp được tạo thành từ một tập hợp các giai đoạn tổng hợp trong các hoạt động cập nhật. Để biết thêm thông tin về các giai đoạn tổng hợp, MongoDB hỗ trợ trong các đường ống tổng hợp được sử dụng trong các hoạt động cập nhật, hãy xem hướng dẫn của chúng tôi về các bản cập nhật xây dựng với các đường ống tổng hợp.updates with aggregation pipelines.

Xem xét một tài liệu của các trường chứa bảng chữ cái tiếng Anh của các chữ cái viết thường

User.updateOne(
     {uid: 'uid'}, 
     {vehicle_status : 'vehicleSatus' },
     {multi:true}, 
       function(err, numberAffected){  
       });
0 đến
User.updateOne(
     {uid: 'uid'}, 
     {vehicle_status : 'vehicleSatus' },
     {multi:true}, 
       function(err, numberAffected){  
       });
1 và các giá trị thứ tự của chúng:

{
_id: 465,
a: 1,
b: 2,
c: 3,
...
y: 25,
z: 26,
}

Nếu bạn áp dụng toán tử cập nhật

User.update({ uid: uid }, { $set: { vehicle_status: vehicleSatus } }, { multi: true })
5 với giá trị được chỉ định cho
User.updateOne(
     {uid: 'uid'}, 
     {vehicle_status : 'vehicleSatus' },
     {multi:true}, 
       function(err, numberAffected){  
       });
1, thao tác cập nhật của bạn có thể giống như sau:

const filter = { _id: 465 };
// update the value of the 'z' field to 42
const updateDocument = {
$set: {
z: 42,
},
};
const result = await collection.updateOne(filter, updateDocument);

Tài liệu được cập nhật giống như sau, với giá trị được cập nhật trong trường

User.updateOne(
     {uid: 'uid'}, 
     {vehicle_status : 'vehicleSatus' },
     {multi:true}, 
       function(err, numberAffected){  
       });
1 và tất cả các giá trị khác không thay đổi:

{
_id: 465,
a: 1,
...
y: 25,
z: 42,
}

Nếu một hoạt động cập nhật không phù hợp với bất kỳ tài liệu nào trong một bộ sưu tập, nó sẽ không thực hiện bất kỳ thay đổi nào. Các hoạt động cập nhật có thể được cấu hình để thực hiện UPSERT cố gắng thực hiện cập nhật, nhưng nếu không có tài liệu nào được khớp, hãy chèn một tài liệu mới.

Bạn không thể sửa đổi trường

User.updateOne(
     {uid: 'uid'}, 
     {vehicle_status : 'vehicleSatus' },
     {multi:true}, 
       function(err, numberAffected){  
       });
5 của tài liệu cũng như không thay đổi trường thành một giá trị vi phạm ràng buộc chỉ mục duy nhất. Xem Hướng dẫn sử dụng máy chủ MongoDB để biết thêm thông tin về các chỉ mục duy nhất.unique indexes.

Để thực hiện thao tác thay thế, hãy tạo một tài liệu thay thế bao gồm các trường và giá trị mà bạn muốn chèn vào thao tác thay thế của mình. Tài liệu thay thế Sử dụng định dạng sau:replacement document that consists of the fields and values that you would like to insert in your replace operation. Replacement documents use the following format:

{
: {
},
: {
...
}
}

Tài liệu thay thế là các tài liệu mà bạn muốn thay thế các tài liệu hiện có phù hợp với các bộ lọc truy vấn.

Xem xét một tài liệu của các trường chứa bảng chữ cái tiếng Anh của các chữ cái viết thường

User.updateOne(
     {uid: 'uid'}, 
     {vehicle_status : 'vehicleSatus' },
     {multi:true}, 
       function(err, numberAffected){  
       });
0 đến
User.updateOne(
     {uid: 'uid'}, 
     {vehicle_status : 'vehicleSatus' },
     {multi:true}, 
       function(err, numberAffected){  
       });
1 và các giá trị thứ tự của chúng:

{
_id: 465,
a: 1,
b: 2,
c: 3,
...
y: 25,
z: 26,
}

Giả sử bạn muốn thay thế tài liệu này bằng một tài liệu chỉ chứa trường

User.updateOne(
     {uid: 'uid'}, 
     {vehicle_status : 'vehicleSatus' },
     {multi:true}, 
       function(err, numberAffected){  
       });
1 với giá trị
User.updateOne(
     {uid: 'uid'}, 
     {vehicle_status : 'vehicleSatus' },
     {multi:true}, 
       function(err, numberAffected){  
       });
9. Hoạt động thay thế của bạn có thể giống như sau:

User.update({ uid: uid }, { $set: { vehicle_status: vehicleSatus } }, { multi: true })
0

Tài liệu được thay thế chứa nội dung của tài liệu thay thế và trường

User.updateOne(
     {uid: 'uid'}, 
     {vehicle_status : 'vehicleSatus' },
     {multi:true}, 
       function(err, numberAffected){  
       });
5 bất biến như sau:

Nếu một hoạt động thay thế không phù hợp với bất kỳ tài liệu nào trong một bộ sưu tập, nó sẽ không thực hiện bất kỳ thay đổi nào. Thay thế các hoạt động có thể được cấu hình để thực hiện UPSERT cố gắng thực hiện thay thế, nhưng nếu không có tài liệu nào được khớp, nó sẽ chèn một tài liệu mới.

Bạn không thể sửa đổi trường

User.updateOne(
     {uid: 'uid'}, 
     {vehicle_status : 'vehicleSatus' },
     {multi:true}, 
       function(err, numberAffected){  
       });
5 của tài liệu cũng như không thay đổi trường thành một giá trị vi phạm ràng buộc chỉ mục duy nhất. Xem Hướng dẫn sử dụng máy chủ MongoDB để biết thêm thông tin về các chỉ mục duy nhất.unique indexes.

Làm cách nào để thêm một trường vào một tài liệu hiện có trong MongoDB?

Để thêm trường hoặc trường vào các tài liệu nhúng (bao gồm các tài liệu trong mảng) sử dụng ký hiệu dấu chấm. Xem ví dụ. Để thêm một phần tử vào một trường mảng hiện có với $ addfields, hãy sử dụng với $ concatarrays.use the dot notation. See example. To add an element to an existing array field with $addFields , use with $concatArrays .

Làm cách nào để thêm một mảng trường vào một tài liệu hiện có trong MongoDB?

Vì vậy, việc thêm một trường mới vào một mảng là có thể bằng cách sử dụng thao tác cập nhật.Toán tử $ Push được sử dụng để chèn trường bên trong mảng và nếu chúng ta muốn thêm nhiều trường, hãy sử dụng $ mỗi bên trong $ PUSP.using the update operation. $push operator is used to insert the field inside the array and if we want to add multiple fields, use $each inside $push.

Làm cách nào để thêm một trường vào một bộ sưu tập hiện có trong Java MongoDB?

Làm thế nào để thêm các trường trong một mảng MongoDB bằng Java..
Giới thiệu.....
Điều kiện tiên quyết.....
Bộ dữ liệu MongoDB.....
Thiết lập quyền truy cập vào triển khai MongoDB.....
Thiết lập quyền truy cập vào cơ sở dữ liệu MongoDB.....
Thiết lập quyền truy cập vào Bộ sưu tập MongoDB.....
Thêm một tài liệu MongoDB mới trong tài liệu MongoDB hiện có ..

Làm thế nào để bạn sử dụng findoneandupdate?

Đúng như tên gọi, FindOneAndupDate () tìm thấy tài liệu đầu tiên khớp với bộ lọc đã cho, áp dụng bản cập nhật và trả về tài liệu.Theo mặc định, FindOneDupDate () trả về tài liệu như trước khi cập nhật được áp dụng.Bạn nên đặt tùy chọn mới thành True để trả lại tài liệu sau khi cập nhật được áp dụng.finds the first document that matches a given filter , applies an update , and returns the document. By default, findOneAndUpdate() returns the document as it was before update was applied. You should set the new option to true to return the document after update was applied.