รับเอกสารนี้บันทึกใน MongoDB
{
_id : ...,
some_key: {
param1 : "val1",
param2 : "val2",
param3 : "val3"
}
}
วัตถุที่มีข้อมูลใหม่ในparam2
และparam3
นอกโลกจะต้องได้รับการบันทึก
var new_info = {
param2 : "val2_new",
param3 : "val3_new"
};
ฉันต้องการผสาน / วางทับฟิลด์ใหม่เหนือสถานะที่มีอยู่ของวัตถุเพื่อให้ param1 ไม่ถูกลบออก
ทำสิ่งนี้
db.collection.update( { _id:...} , { $set: { some_key : new_info } }
จะนำไปสู่ MongoDB กำลังทำตามที่ขอและตั้งค่า some_key ให้เป็นค่านั้น แทนที่เก่า
{
_id : ...,
some_key: {
param2 : "val2_new",
param3 : "val3_new"
}
}
มีวิธีการอย่างไรที่ MongoDB จะอัพเดทเฉพาะฟิลด์ใหม่ (โดยไม่ต้องระบุทีละหนึ่งอย่างชัดเจน) เพื่อรับสิ่งนี้:
{
_id : ...,
some_key: {
param1 : "val1",
param2 : "val2_new",
param3 : "val3_new"
}
}
ฉันใช้ไคลเอนต์ Java แต่ตัวอย่างใดจะได้รับการชื่นชม