Я строю карту bson в golang, используя библиотеку mgo. Я хочу реорганизовать код, чтобы избежать дублирования.как создать карту bson на основе ввода
Рассмотрим это:
bson.M {
"$match" : bson.M{
"xyz" : "abc",
},
"$id_1" : value_1,
}
и другой BSON карта типа:
bson.M {
"$match" : bson.M{
"xyz" : "abc",
},
"$id_2" : value_2,
}
Как я могу объединить два (построить bson.M из функции и возврата, значение1/2 являются Params к этому func), который будет использоваться на основе if value_1 - пустая строка или value_2 - пустая строка.
Например: если я создаю следующую функцию. Мое намерение состоит в том, чтобы построить карту первого типа (см. Выше), вызвав buildBsonObject («123», «»), а второй - вызовом buildBsonObject («», «456»).
func buildBsonObject (value_1 string, value_2 string) {
return bson.M {
"$match" : bson.M{
"xyz" : "abc",
},
"$id_1" : value_1,
"$id_2" : value_2,
}
}
Если я делаю следующее (см функции buildBsonObject), а затем, когда значение_1 пустая строка, моя агрегация Монго запрос не будет работать, так как он будет трактовать как ID_1 быть «», в то время как я намеревался только что ID_2 в мой объект bson.
Любые предложения о том, как это сделать. Благодарю.
спасибо за ваш ответ, это то, что я также думал, должно работать, но у меня была ошибка (до того, как я опубликовал это здесь), на самом деле у меня есть несколько уровней бсон-карт, где я сделал ошибку, и я думал, что это не будет работать так :( –