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

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

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文本搜索,但是需要建立索引,不实际链接
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lsjweiyi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值