2017-10-10 4 views
0

私は文書の集まりを持っています。ドキュメントにはそれぞれ、リバース、見積もりなどのさまざまなプロパティがあります。引用番号でグループ化し、グループ内の最新のリビジョンで1つの文書を選択する必要があります。例4はそれぞれ12345とrev A-Dを持つ文書です。 "D"文書とクライアントに最新のrevを送った他のすべての文書が必要です。 私は同様の質問hereを見つけましたが、それは私のために働くことができません。この解決のために@VeeramへMongoDb:グループ分けし、最後に文書をソートして取ります

クエリ

db.myCollection.aggregate([ 
{ "$group": { 
    "_id": "$quote", 
    "rev": { "$first":"$rev"} 
} 
]) 

コレクション

{ 
    "_id" : ObjectId("58b6054c17c2cd53cf4176fe"), 
    "rev" : "A", 
    "quote" : "12345", 
}, 
{ 
    "_id" : ObjectId("58b6085617c2cd53cf417710"), 
    "rev" : "B", 
    "quote" : "12345", 
}, 
{ 
    "_id" : ObjectId("58b6da4617c2cd53cf417728"), 
    "rev" : "C", 
    "quote" : "12345", 
}, 
{ 
    "_id" : ObjectId("58b6e5c317c2cd53cf417744"), 
    "rev" : "D", 
    "quote" : "12345", 
}, 
{ 
    "_id" : ObjectId("58b6f44917c2cd53cf41776e"), 
    "rev" : "A", 
    "quote" : "54321", 
}, 
{ 
    "_id" : ObjectId("58b6ffcb17c2cd53cf417788"), 
    "rev" : "B", 
    "quote" : "54321", 
} 
+0

他の回答のように並べ替えてみましたか? db.myCollection.aggregate([{$ sort ":{" quote ":1、" rev ":1}}のようなもの {" $ group ":{ " _id ":" $ quote "、 '' rev ":{" $ last ":" $ rev "} } ]' – Veeram

+0

@Veeramはデータを返しましたが、_idとrevプロパティのみでした。ドキュメント全体を取得するにはどうすればよいですか? –

+0

「db.myCollection.aggregate({{"$ sort":{"quote":1、 "rev":1}}、{"$ group":{"_id": "$ quote"、 "data" :{"$ last": "$$ ROOT"}}]) ' – Veeram

答えて

0

感謝。

db.myCollection.aggregate([{"$sort":{"quote":1, "rev":1 }}, { "$group": { "_id": "$quote", "data": { "$last":"$$ROOT"} } ]) 
関連する問題