2017-11-27 3 views
0

ich eine Post-Anforderung haben, die die Daten in folgendem Format zu schreiben, speichertWie alle Details der Aufzeichnung in mongodb

{ 
    "_id" : ObjectId("5a1bb15a8f7748197b175b9f"), 
    "created_at" : ISODate("2017-11-27T06:31:54.288+0000"), 
    "updated_at" : ISODate("2017-11-27T06:32:22.943+0000"), 
    "sensorData" : { 
     "isLinked" : true, 
     "assetsLinked" : [ 
      { 
       "ref" : ObjectId("5a1bb1638f7748197b175ba2"), 
       "type" : "obdDevice" 
      }, 
      { 
       "type" : "rfIdTag", 
       "ref" : ObjectId("5a1bb1708f7748197b175ba8") 
      }, 
      { 
       "ref" : ObjectId("5a1bb1768f7748197b175bad"), 
       "type" : "driver" 
      } 
     ], 
     "carNo" : "car123", 
     "assetName" : "car123", 
     "make" : "Toyota", 
     "modelNo" : "Camry", 
     "dutyType" : "Public Taxi", 
     "sensorType" : "car", 
     "sensorLabel" : "Taxi" 
    }, 
    "__v" : NumberInt(0) 
} 

ref ist die ID von einem anderen Dokument in derselben Sammlung

versuchen eine Abfrage aus, auf einzelne Suchabfrage werden alle Daten aus dem db

ich sollte es auch

alle Daten des Referenz-ID Rückkehr bedeuten zurückgegeben werden muss

versucht, sich zu entspannen und ein Fundstück aber nicht sicher, bitte helfen sie

Antwort

0

Diese Abfrage

db.collectionName.aggregate([ 
    {$unwind: "$sensorData.assetsLinked"}, 
    { 
    $lookup: { 
     from: "collectionName", 
     localField: "sensorData.assetsLinked.ref", 
     foreignField: "_id", 
     as: "assetsLinked" 
    } 
    }, 
    { 
    $group: { 
     _id: "$_id", 
     "updated_at": {$first: "$updated_at"}, 
     "sensorIsLinked": {$first: "$sensorData.isLinked"}, 
     "sensorCarNo": {$first: "$sensorData.carNo"}, 
     // select as you need 
     "assetsLinked": {$push: {ref: {$arrayElemAt: ["$assetsLinked", 0]}, value: "sensorData.assetsLinked.value"}} 
    } 
    }, 
    { 
    $project: { 
     "updated_at": "$updated_at", 
     "sensorData.isLinked": "$sensorIsLinked", 
     "sensorData.carNo": "$sensorCarNo", 
     // project as you need 
     "sensorData.assetsLinked": "$assetsLinked" 
    } 
    } 
]) 
zu tun
Verwandte Themen