2017-01-07 44 views
0
{ 
    "dictID" : "37528e10-6344-4d93-8a57-35af0bdb6b34", 
    "dictVersion" : 1, 
    "addMeasures" : [ 
     { 
      "measureId" : "f229ba18-0de8-47a1-8a87-88c95edd536a", 
      "userId" : "3966C3DD-8328-4F18-A061-02A01111763A", 
      "created" : "2017-01-07T05:47:22.512Z", 
      "ownerAction" : "NA" 
     } 
    ], 
    "deleteMeasures" : [ 
     { 
      "measureId" : "0b701469-1502-4de4-95de-1ee70ad6c577", 
      "userId" : "3966C3DD-8328-4F18-A061-02A01111763A", 
      "created" : "2017-01-07T05:47:35.193Z", 
      "ownerAction" : "NA" 
     }, 
     { 
      "measureId" : "443d1b97-95ae-4410-9302-da3edbad4004", 
      "userId" : "3966C3DD-8328-4F18-A061-02A01111763A", 
      "created" : "2017-01-07T05:47:36.062Z", 
      "ownerAction" : "NA" 
     }, 
     { 
      "measureId" : "aa1689c9-8df6-4bff-88a4-274a4f2dc2aa", 
      "userId" : "3966C3DD-8328-4F18-A061-02A01111763A", 
      "created" : "2017-01-07T05:47:37.075Z", 
      "ownerAction" : "NA" 
     } 
    ] 
} 

以上就是我蒙戈收集和我想要做以下查询:更新特定地图

db.getCollection('DataDictionaryReview').update(
    { 
     $and: [ 
      { dictID: "37528e10-6344-4d93-8a57-35af0bdb6b34" }, 
      { dictVersion: 1 }, 
      { "deleteMeasures.measureId": "aa1689c9-8df6-4bff-88a4-274a4f2dc2aa" }, 
      { "deleteMeasures.ownerAction": "NA" } 
     ] 
    }, 
    { 
     $set: { 
      "deleteMeasures.$.created": "2017-01-07T06:51:56.983Z",   
      "deleteMeasures.$.ownerAction": "Reject" 
     } 
    } 
) 

我想更新的deleteMeasures每次最后一个地图,查询正在更新deleteMeasures的第一张地图。

回答

0

这很奇怪,查询看起来没问题,但我认为它需要$ elemMatch来获取正确的索引值。

db.getCollection('DataDictionaryReview').update(
    { 
      dictID: "37528e10-6344-4d93-8a57-35af0bdb6b34", 
      dictVersion: 1 , 
      "deleteMeasures" : { $elemMatch : {"measureId": "aa1689c9-8df6-4bff-88a4-274a4f2dc2aa", "ownerAction": "NA" }} 
    }, 
    { 
     $set: { 
      "deleteMeasures.$.created": "2017-01-07T06:51:56.983Z",   
      "deleteMeasures.$.ownerAction": "Reject" 
     } 
    } 
) 
+0

谢谢你的回答。它的工作。 –