亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用官方 mongo-go-driver 進行正確的通配符多字段查詢

使用官方 mongo-go-driver 進行正確的通配符多字段查詢

Go
至尊寶的傳說 2023-07-31 10:52:30
我有一個數據庫字段:            "sessionid": "C-dhf",             "given": "NURSE ",             "family": "SHARK",             "name": "SHARK, NURSE",我正在嘗試創建一個查詢,該查詢將查詢數據庫,查找家族以“s”開頭、給定名稱以“n”開頭的記錄。我正在使用以下內容來創建過濾器。        {"sessionid", "C-dhf"},         {"$and", bson.A{             bson.D{{"family", primitive.Regex{Pattern: "^s", Options: "i"}}},             bson.D{{"given", primitive.Regex{Pattern: "^n", Options: "i"}}},         }},     }查找中使用的過濾器值為:[{sessionid C-dhf} {$and [[{family {"pattern": "^s", "options": "i"}}] [{given {"pattern": "^n", "options": "i"}}]]}]發現是:cursor, err := collection.Find(context.TODO(), filter, findOptions)它返回數據庫中的所有記錄,就好像它甚至沒有查看過濾器一樣。多字段通配符查詢的正確 go 語法是什么?
查看完整描述

1 回答

?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

默認情況下,所有列出的條件都采用邏輯 AND 連接 ( $and),因此您無需添加:


filter := bson.D{

    {"sessionid", "C-dhf"},

    {"family", primitive.Regex{Pattern: "^s", Options: "i"}},

    {"given", primitive.Regex{Pattern: "^n", Options: "i"}},

}

如果您想要邏輯 OR 連接,則您使用的語法和結構將是合適的:如果您想要具有給定會話 ID 的文檔,并且其姓氏以 開頭或給定s名稱以 開頭n。這可能看起來像這樣:


filter := bson.D{

    {"sessionid", "C-dhf"},

    {"$or", bson.A{

        bson.D{{"family", primitive.Regex{Pattern: "^s", Options: "i"}}},

        bson.D{{"given", primitive.Regex{Pattern: "^n", Options: "i"}}},

    }},

}


查看完整回答
反對 回復 2023-07-31
  • 1 回答
  • 0 關注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號