3 回答

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
不確定你是否找到了答案,但我昨天為此奮斗了一個(gè)多小時(shí)。
我不肯定這會(huì)解決你的問題。我假設(shè)您正在嘗試根據(jù)您的輸入構(gòu)建一個(gè)過濾器。最終我在嘗試傳遞數(shù)組時(shí)沒有使用 bson.A。
情況:試圖構(gòu)建一個(gè)過濾器,其中一個(gè) bson.D 元素是一個(gè)數(shù)組。
我以為我需要使用 bson.A。
我的初步假設(shè):
return bson.D{
{"uuid", request.Uuid},
{"action", request.Action},
{"resource", bson.D{{"$in", bson.A{resourceStrings}}}},
}
哪里resourceStrings是一段字符串。
然而,這最終將構(gòu)建一個(gè)看起來像 FILTER : [ {resource [{$in [[Orgs::Organizations::1 Orgs::Organizations::* Orgs::Organizations Orgs::*]]}]}]
*注意 $in 方法在這里尋找一個(gè)數(shù)組的數(shù)組。
我們想要的是: FILTER : [{uuid 80} {action UpdateOrganization} {resource [{$in [Orgs::Organizations::1 Orgs::Organizations::* Orgs::Organizations Orgs::*]}]}]
如果我們傳入字符串的文字?jǐn)?shù)組,它將起作用......
return bson.D{
{"uuid", request.Uuid},
{"action", request.Action},
{"resource", bson.D{{"$in", bson.A{"Orgs::Organizations::1", "Orgs::Organizations::*", "Orgs::Organizations", "Orgs::*"}}}},
}
經(jīng)過反復(fù)試驗(yàn),我發(fā)現(xiàn) bson.D 會(huì)直接接受數(shù)組。
最終我解決了這個(gè)問題
return bson.D{
{"uuid", request.Uuid},
{"action", request.Action},
{"resource", bson.D{{"$in", resourceStrings}}},
}
從字面上看你的例子 - 如果你只是想將一個(gè)數(shù)組編組到一個(gè) bson.A 嘗試:
bson.A{input}

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
這是我的代碼,用于根據(jù)存在于另一個(gè)集合中的 ID 刪除多個(gè)文檔。
我們首先從一個(gè)集合中收集所有 ID 并添加到一個(gè)切片中。然后我們使用刪除另一個(gè)集合中的文檔DeleteMany()
我正在展示相關(guān)代碼以保持代碼整潔。
杰森
[
{
"id": "602607bcfdc0548bfebbd0c7",
"subject": "SUBJECT",
"system": "SYSTEM",
"board": "BOARD",
"series": "SERIES",
"paper": "PAPER",
"year": "2021",
"month": "February",
"question_hex_ids": [
"602607bcfdc0548bfebbd0c4",
"602607bcfdc0548bfebbd0c5",
"602607bcfdc0548bfebbd0c6"
]
}
]
代碼
var hexIDCollection []primitive.ObjectID
database := db.Conn.Database("mydatabase")
question := database.Collection("questions")
//Iterating to collect IDs from paper
for k, _ := range mystruct.question_hex_ids {
// fetching all IDs and appending to slice
ids := mystruct.question_hex_ids[k]
hexID, err := primitive.ObjectIDFromHex(ids)
if err != nil {
fmt.Println("ObjectIDFromHex ERROR", err)
}
//Populating a slice of all the IDs
hexIDCollection = append(hexIDCollection, hexID)
}
filter := bson.D{
{"_id", bson.D{{"$in", hexIDCollection}}}, }
deleteResult, err1 := question.DeleteMany(ctx, filter)
if err != nil {
fmt.Println("Question Deletion Error", err1)
}
fmt.Println("All questions Deleted: ", deleteResult)
- 3 回答
- 0 關(guān)注
- 279 瀏覽
添加回答
舉報(bào)