Не уверен, что вы когда-нибудь нашли свой ответ, но я боролся с этим в течение часа + вчера.
Я не уверен, что это решит то, что вы спрашиваете. Я предполагаю, что вы пытаетесь создать фильтр из вашего ввода. В конечном итоге я не использовал bson.A, когда пытался передать массив.
Ситуация: Попытка создать фильтр и один из элементов bson.D - это массив.
Я думал Мне нужно было использовать bson.A.
Мое первоначальное предположение:
return bson.D{
{"uuid", request.Uuid},
{"action", request.Action},
{"resource", bson.D{{"$in", bson.A{resourceStrings}}}},
}
, где resourceStrings
- фрагмент строки.
Однако в конечном итоге это создаст фильтр, который выглядит как
FILTER : [ {resource [{$in [[Orgs::Organizations::1 Orgs::Organizations::* Orgs::Organizations Orgs::*]]}]}]
* Обратите внимание, что метод $ in ищет здесь массив массивов.
То, что мы хотим, это:
FILTER : [{uuid 80} {action UpdateOrganization} {resource [{$in [Orgs::Organizations::1 Orgs::Organizations::* Orgs::Organizations Orgs::*]}]}]
Если мы передадим массив строк, он будет работать ...
return bson.D{
{"uuid", request.Uuid},
{"action", request.Action},
{"resource", bson.D{{"$in", bson.A{"Orgs::Organizations::1", "Orgs::Organizations::*", "Orgs::Organizations", "Orgs::*"}}}},
}
После некоторых проб и ошибок я обнаружил, что bson.D будет напрямую принимать массив.
в конечном итоге я решил проблему таким образом
return bson.D{
{"uuid", request.Uuid},
{"action", request.Action},
{"resource", bson.D{{"$in", resourceStrings}}},
}
В буквальном смысле ваш пример - если вы просто пытаетесь упорядочить массив в bson. Попробуйте:
bson.A{input}