1
我有兩個集合:收視率和預訂。在MongoDB中以ID爲基礎對兩個集合進行加入
在預訂集合我有一個字段「_id」這是正常的文檔ID。我還在預訂集合中保存了一個字段「location_id」。在收視率收藏中,我將預訂ID標記爲「booking_id」字段。
查詢1:
我想「LOCATION_ID」的基礎上,收視率計,這意味着首先我需要得到LOCATION_ID的基礎上預訂的話,我需要找到該預訂評級(具有「location_id」的位置)。
爲此,我已經完成的MongoDB通過聚合兩個集合這樣加入:
getCollection := mongoSession.DB(config.Database).C(config.RatingsCollection)
pipe := getCollection.Pipe([]bson.M{
bson.M{"$match": bson.M{"location_id": 2}},
bson.M{"$lookup": bson.M{
"localField" : "booking_id",
"from" : config.BookingsCollection,
"foreignField" : "_id"}},
bson.M{"$count": "ratings_count"}, })
err = pipe.All(&result)
QUERY2:
此外,我需要知道我們如何才能增加更多的條件(這是要應用在同一個集合中)我們的查詢?
我需要執行此連接操作查詢以及一些其他條件,如收視率集合我有另一個字段,如「rating_date」,其中包含時間戳值。
condition := bson.M{}
condition["review_date"] = bson.M{"$gte": startDate, "$lte": endDate}
allratingsCount, err := models.GetRatingsCount(condition)
func GetRatingsCount(query interface{}) (int, error){
count, err := GetRecordsCount(config.RatingsCollection, query)
if err != nil{
return 0, err
}
return count, err
}
贊在代碼中,我需要發送另一個條件加入查詢。我可以一起執行這兩件事嗎?
在此先感謝。
你問如何添加另一個'$ match'階段到管道? –
你可以這麼說。但是,我是否需要在同一個連接查詢中匹配其他條件?沒有辦法單獨管理這些條件(除了加入)嗎? –
那麼你「*需要發送另一個條件加入查詢*」和「*一起執行這兩件事*」或不? –