2017-05-17 9 views
0

2台のサーバーがあり、一部のデータが失われてしまったため、何が失われているかを確認して修正する必要があります。注文のデータは次のようになります。私はの数を取得する必要があり2つのコレクションからデータを選択するmongodb

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

}

:各cart.itemに対して

{ 
     "_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 
} 

、このような登録のコレクション内の文書がありますorders.cart.items配列の項目を検索し、paymentIdが注文のものと同じ登録の結果の数と一致するかどうかを確認します。 同じでない場合は、その結果を確認する必要があります。

mongoでこれを行う方法を理解できたら助けてくれますか?

答えて

0

私はこれを実際に考え出しました!私は、アグリゲーションパイプラインで$ルックアップを使用する必要がありました:

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

これは私がcart.itemsと登録配列の長さを表示し、それらを比較するためにNG・リピートとNG-IFを使用することができました。彼らが違うなら、私はそれぞれの内容を表示しました。それはまさに私が探していたもので、すごく速かったです!集合が大好き。

関連する問題