รับวัตถุที่ระดับราก mongodb

เอกสาร:

{"_id":"5cb0dfe234a8a30c9c0af127",
"sensors":
[{"value0":0.153,
"value1":-0.306,
"value2":9.807}],
"timestamp":1555095522489,"__v":0}

ฉันต้องการรับ 4 ฟิลด์ (การประทับเวลาและค่า 0..2) โดยไม่มีอาร์เรย์ / วัตถุใด ๆ คลี่คลายทำงานกับอาเรย์เท่านั้น แต่ไม่ใช่วัตถุ ฉันควรทำอย่างไรดี?

ผลลัพธ์ที่ต้องการ :

{timestamp":1555095522489,
value0":0.153,
value1":-0.306,
value2":9.807}

person Dmitry Sokolov    schedule 14.04.2019    source แหล่งที่มา
comment
ผลลัพธ์ควรเป็นอย่างไร?   -  person Ashh    schedule 14.04.2019
comment
เอกสารทั้งหมดจากการรวบรวมในรูปแบบ: timestamp, value0, value1, value2 {1555095522489, 0.153, -0.306, 9.807}   -  person Dmitry Sokolov    schedule 14.04.2019
comment
โปรดแสดงผลในรูปแบบ JSON โดยแก้ไขคำถามของคุณ   -  person Ashh    schedule 14.04.2019
comment
อาจซ้ำกันของ stackoverflow.com/questions/11189243 /   -  person krishna Prasad    schedule 14.04.2019


คำตอบ (1)


ใช้ $unwind และ $replaceRoot ตัวดำเนินการการรวม

db.collection.aggregate([   
  { "$unwind": "$sensors" },
  { "$replaceRoot": { "newRoot": { "$mergeObjects": ["$sensors", { "timestamp": "$timestamp" }] }}} 
])
person Ashh    schedule 14.04.2019