当前位置: 首页 > 工具软件 > Go-Mongo > 使用案例 >

golang使用mongo-driver操作——查(进阶)

龚弘业
2023-12-01

更复杂的查询一时也想不到什么场合用得着,所以以后有了再慢慢补充。

and 和or组合:

// 展示复杂的and和or关系组合查询
func AdvanceAndOr(mongo *mongo.Database, ctx context.Context) {
	// 平时我们的条件都是具有隐式的and关系,但是因为同时需要使用两次$or,所以就需要显示使用and
	filter := bson.M{"$and": bson.A{bson.M{"$or": bson.A{bson.M{"int32": math.MaxInt32}, bson.M{"int32": math.MaxInt32 - 1}}}, bson.M{"$or": bson.A{bson.M{"boolean": true}, bson.M{"boolean": false}}}}}
	// 查询数据,并解析成结构体
	cur, _ := mongo.Collection("test").Find(ctx, filter)
	// 遍历数据
	for cur.TryNext(ctx) {
		result, _ := cur.Current.Elements()
		fmt.Println(result)
	}
	cur.Close(ctx)
}

我认为复杂的查询往往是组合各种关键字进行查询,所以,下面将一些还未实践过的关键字给列出来,方便以后查询。

关键字解释链接
ne不等于链接
not反转结果,除了匹配条件以外的所有文档链接
nor返回每个条件都不匹配或者就没有该字段的文档,和上面这个很像,但是有区别链接
exists具有指定字段的文档链接
type匹配字段类型链接
expr聚合表达式,功能很强大,很复杂链接
jsonSchema文档校验规则,文档的数据本身没有限制,用这个可以限制链接
mod求模,用余数做查询条件链接
regex正则表达式匹配链接
text文本搜索,但是需要建立索引,不实际链接
 类似资料: