2017-05-17 26 views
0

我們有兩臺服務器正在運行,一些數據丟失了,所以我需要檢查缺少的是什麼,並修復它。訂單的數據是這樣的:從兩個集合中選擇數據mongodb

{ 
     "_id" : ObjectId("591a067bd7bc153c9bd4b5c2"), 
     "customer" : "cus_AeMs19HKhEZDY7", 
     "paymentID" : "ch_1AFb9pEz37oqk2rHVkbAfNrU", 
     "paymentStatus" : "PAID", 
     "user" : "[email protected]", 
     "createdOn" : ISODate("2017-05-15T19:50:19.775Z"), 
     "cart" : { 
       "username" : "[email protected]", 
       "totalQty" : 1, 
       "totalPrice" : 50, 
       "items" : [ 
         { 
           "players" : [ 
             { 
               "country" : "jlk", 
               "zip" : "jkl", 
               "state" : "jkl", 
               "city" : "jkl", 
               "address" : "jkl", 
               "phone" : "432", 
               "email" : "[email protected]", 
               "last" : "Snape", 
               "first" : "Severus" 
             }, 
             { 
               "adult" : null, 
               "country" : "jlk", 
               "zip" : "jlk", 
               "state" : "jkl", 
               "city" : "jkl", 
               "address" : "jkl", 
               "phone" : "432", 
               "email" : "[email protected]", 
               "last" : "Potter", 
               "first" : "Harry" 
             } 
           ], 
           "price" : 50, 
           "numplayers" : 2, 
           "group" : "nonpro", 
           "level" : "12s", 
           "division" : "Junior Boys", 
           "field" : "Main", 
           "day" : "Friday", 
           "event" : "Junior Boys 12s", 
           "id" : "58d89697ffc0346230a43a8d" 
         } 
       ] 
     }, 
     "__v" : 0 
} 

對於每個cart.item,有這樣的註冊收集的文件:

{ 
    "_id" : ObjectId("590aa7a13c85042478800c52"), 
    "event" : "Women's B", 
    "paymentId" : "ch_1AFb9pEz37oqk2rHVkbAfNrU", 
    "createdOn" : ISODate("2017-05-13T06:24:07.609Z"), 
    "paymentID" : "VOLUNTEER", 
    "paymentStatus" : "PAID", 
    "__v" : 1 

}我需要得到的計數orders.cart.items數組中的項目,並查看它們是否與paymentId與訂單中相同的註冊結果的數目相匹配。 如果他們不一樣,我需要看到這些結果。

有人可以幫我理解如何用mongo做到這一點嗎?

回答

0

我想出了這一個,實際上!我不得不使用$查找在聚合管道:

Order 
    .aggregate([  
    {  $lookup:   
    {   from: "registrations", 
       localField: "paymentID",   
       foreignField: "paymentId",   
       as: "REGISTRATIONS"   
    }  
    } 
    ]); 

這允許我使用NG重複和NG-如果顯示cart.items和註冊數組的長度,並比較他們。如果他們不同,我會顯示每個的內容。這正是我尋找的東西,而且超級快!總得愛。