1 回答

TA貢獻1725條經驗 獲得超8個贊
我想更新數據庫中的一些字段并希望它返回一些字段,
如果您使用mongo-go-driver(當前為 v1.1),您可以使用FindOneAndUpdate()來查找單個文檔并更新它,返回原始文檔或更新后的文檔。
該方法接受FindOneAndUpdateOptions的參數,它支持投影。例如:
collection := client.Database("dbName").Collection("collName")
// Sets projection (or return fields)
findUpdateOptions := options.FindOneAndUpdateOptions{}
findUpdateOptions.SetProjection(bson.M{"order_id": 1})
result := collection.FindOneAndUpdate(context.TODO(),?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? bson.M{"foo":1},?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? bson.M{"$set": bson.M{"bar":1}},?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? &findUpdateOptions)
doc := bson.M{}
err = result.Decode(&doc)
上面的查詢將匹配字段foo
為 1 的文檔,將字段更新為 1,并僅作為結果bar
返回。order_id
請注意,默認情況下_id
也會返回該字段。您可以通過將_id 字段設置為 0 來禁止投影。
請注意,返回類型FindOneAndUpdate
是SingleResult對象,它表示從操作返回的單個文檔。如果操作返回錯誤,則Err
SingleResult 的方法將返回該錯誤。
- 1 回答
- 0 關注
- 131 瀏覽
添加回答
舉報