我參與過 Go 和 MongoDb 專案。其中,我遇到了一個問題。我已使用 $in 運算子將整數 ([]int) 的動態切片傳遞到查詢中。每件事看起來都不錯,但是當這個切片為空時,它會回傳一個錯誤“$in 需要一個陣列”。但我將它用作搜索引數,并希望如果我傳遞空白陣列,則它與所有匹配。
注意:我已經使用了 MongoDB shell 版本 v5.0.3
這是我的代碼:
var searchedProfiles []int
searchFilter := bson.M{"customer.id": bson.M{"$in": searchedProfiles}}
newQry := []bson.M{
{"$lookup": bson.M{
"localField": "cid",
"from": "customers",
"foreignField": "_id",
"as": "customer"}},
{"$match": searchFilter},
}
如果有人有任何想法,請告訴我。謝謝!
uj5u.com熱心網友回復:
nil值不會被編組為空陣列,因此請確保searchedProfiles不是nil但至少是一個空切片:
searchedProfiles = []int{}
這將被編組到一個空陣列中,因此您不會得到有問題的錯誤。
但這不會給你所有的檔案,這不會給你任何結果(空串列中沒有任何內容)。
如果沒有搜索到的組態檔,請將其從過濾中排除。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/373123.html
上一篇:通過反射創建結構實體并設定值
