Dapatkan objek di mongodb tingkat akar

dokumen:

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

Saya ingin mendapatkan 4 bidang (cap waktu dan nilai 0..2) tanpa array/objek apa pun. bersantai hanya bekerja terhadap array tetapi tidak pada objek. Apa yang harus saya lakukan?

keluaran yang diinginkan:

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

person Dmitry Sokolov    schedule 14.04.2019    source sumber
comment
Apa yang harus menjadi outputnya?   -  person Ashh    schedule 14.04.2019
comment
semua dokumen dari koleksi dalam format : stempel waktu, nilai0, nilai1, nilai2 {1555095522489, 0.153, -0.306, 9.807}   -  person Dmitry Sokolov    schedule 14.04.2019
comment
Harap tunjukkan output dalam format JSON dengan mengedit pertanyaan Anda   -  person Ashh    schedule 14.04.2019
comment
Kemungkinan duplikat stackoverflow.com/questions/11189243 /   -  person krishna Prasad    schedule 14.04.2019


Jawaban (1)


Gunakan $unwind dan $replaceRoot operator agregasi

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