Я хочу получить записи данных из документа mongodb, используя $ или и $ lookup.Вот запрос, который я делаю для подтверждения: -
pipeline1 := []bson.M{
{"$lookup": bson.M{"from": "comment", "localField": "_id", "foreignField": "blog_id", "as": "comments"}},
{"$addFields": bson.M{"comments": bson.M{"$size": "$comments"}}},
}
pipe1 := getCollection.Pipe(pipeline1)
В приведенном выше запросе он сначала посчитает записи и добавит поле с конкретными данными.Но теперь у меня есть небольшое изменение в запросе: теперь есть еще два параметра, которые мне нужно искать с помощью $ или для регулярного выражения. Я хочу, чтобы функция делала то же самое, но при получении записей, если пользователь введетлюбой параметр затем будет извлекать запись с использованием этого ключевого слова, а также подсчитывать эти данные.
Отредактировано
Я должен объединить вышеуказанный запрос с приведенным нижезапрос: -
query["$or"] = []bson.M{
bson.M{"title": bson.RegEx{"(?i).*" + value + ".*", "i"}},
bson.M{"type": bson.RegEx{"(?i).*" + value + ".*", "i"}},
bson.M{"author": bson.RegEx{"(?i).*" + value + ".*", "i"}},
bson.M{"tags": bson.RegEx{"(?i).*" + value + ".*", "i"}},
}
Я объединяю это так, но оно ничего не возвращает.
pipeline1 := []bson.M{
{"$or": []bson.M{
bson.M{"_id": bson.M{"$in": ids}},
bson.M{"type": bson.RegEx{"(?i).*" + types + ".*", "i"}},
bson.M{"category": bson.RegEx{"(?i).*" + category + ".*", "i"}},
bson.M{"author": bson.RegEx{"(?i).*" + keyword + ".*", "i"}},
bson.M{"title": bson.RegEx{"(?i).*" + keyword + ".*", "i"}},
bson.M{"tags": bson.RegEx{"(?i).*" + tag + ".*", "i"}}}},
{"$lookup": bson.M{"from": "comment", "localField": "_id", "foreignField": "blog_id", "as": "comments"}},
{"$addFields": bson.M{"comments": bson.M{"$size": "$comments"}}},
}
pipe1 := getCollection.Pipe(pipeline1)
Последнее редактирование
AS @kmdrekoговорят, что я делаю подобное, но не работает: -
query := bson.M{}
query["$or"] = []bson.M{
bson.M{"_id": bson.M{"$in": ids}},
bson.M{"type": bson.RegEx{"(?i).*" + types + ".*", "i"}},
bson.M{"category": bson.RegEx{"(?i).*" + category + ".*", "i"}},
bson.M{"author": bson.RegEx{"(?i).*" + keyword + ".*", "i"}},
bson.M{"title": bson.RegEx{"(?i).*" + keyword + ".*", "i"}},
bson.M{"tags": bson.RegEx{"(?i).*" + tag + ".*", "i"}},
}
fmt.Println(query)
pipeline1 := []bson.M{
{"$lookup": bson.M{"from": "comment", "localField": "_id", "foreignField": "blog_id", "as": "comments"}},
{"$addFields": bson.M{"comments": bson.M{"$size": "$comments"}}},
{"$match": query},
}
fmt.Println(pipeline1)
pipe1 := getCollection.Pipe(pipeline1)