Go 在 MongoDB 中常用查詢與修改

2021-08-20 14:50:07 字數 2280 閱讀 6080

以下所有例子中結構定義如下:

type

user

struct

通過func (c *collection) find(query inte***ce{}) *query來進行查詢,返回的query struct可以有附加各種條件來進行過濾。

通過query.all()可以獲得所有結果,通過query.one()可以獲得乙個結果,注意如果沒有資料或者數量超過乙個,one()會報錯。

條件用bson.m,注意key必須用mongodb中的欄位名,而不是struct的欄位名。

1.1、查詢所有

var users user

c.find(nil).all(&users)

上面**可以把所有users都查出來:

1.2、根據objectid查詢

id := "5204af979955496907000001"

objectid := bson.objectidhex(id)

user := new(user)

c.find(bson.m).one(&user)

更簡單的方式是直接用findid()方法:

c.findid(objectid).one(&user)
注意這裡沒有處理err。當找不到的時候用one()方法會出錯。

1.3、單條件查詢

=($eq)

c.find(bson.m).all(&users)
!=($ne)

c.find(bson.m}).all(&users)
>($gt)

c.find(bson.m}).all(&users)
<($lt)

c.find(bson.m}).all(&users)
>=($gte)

c.find(bson.m}).all(&users)
<=($lte)

c.find(bson.m}).all(&users)
in($in)

c.find(bson.m}}).all(&users)
1.4、多條件查詢

and($and)

c.find(bson.m).all(&users)
or($or)

c.find(bson.m, bson.m}}).all(&users)
通過func (*collection) update來進行修改操作。

func (c *collection) update(selector inte***ce{}, change inte***ce{}) error
注意修改單個或多個字段需要通過$set操作符號,否則集合會被替換。

2.1、($set)

//修改欄位的值

c.update(

bson.m,

bson.m}

)

2.2、inc($inc)
//字段增加值

c.update(

bson.m,

bson.m}

)//欄位num陣列第三個數增加值

c.update(

bson.m,

bson.m})

2.3、push($push)
//從陣列中增加乙個元素

c.update(

bson.m,

bson.m}

)

2.4、pull($pull)
//從陣列中刪除乙個元素

c.update(

bson.m,

bson.m}

)

2.5、刪除
c.remove(bson.m)

Go 在 MongoDB 中對陣列元素進行查詢

mongodb中根據陣列子元素進行匹配,有兩種方式。使用 陣列名 子元素欄位名 的方式進行匹配。使用 陣列名 elemmatch 的方式。不同點在於所匹配的主體不同。陣列名 子元素欄位名 的方式匹配的主體為 陣列名 適用於單個條件,如果是多個條件,則變成陣列子元素之間的 或 運算。請看示例 假設某個...

MongoDB中常用語句

delete 刪除 刪除乙個集合 db.collection.deleteone 刪除多個集合 db.collection.deletmany remove 刪除 刪除所有的name 李四的資料 db.student.remove 只刪除一條 男的資料 僅刪除一條 db.student.remove...

解析PHP中常見的mongodb查詢操作

字串為 querys array name shian 數值等於多少 querys array number 7 數值大於多少 querys array number array gt 5 數值大於等於多少 querys array number array gte 2 數值小於多少 querys ...