返回顶部
首页 > 资讯 > 后端开发 > GO >过滤查询 mongodb Golang
  • 617
分享到

过滤查询 mongodb Golang

2024-02-12 09:02:23 617人浏览 安东尼
摘要

PHP小编西瓜今天要为大家介绍的是关于过滤查询mongoDB的golang实现。在使用monGodb数据库进行数据查询时,我们经常需要对查询结果进行过滤,以满足特定的条件。Golang

PHP小编西瓜今天要为大家介绍的是关于过滤查询mongoDBgolang实现。在使用monGodb数据库进行数据查询时,我们经常需要对查询结果进行过滤,以满足特定的条件。Golang作为一种强大的编程语言,提供了丰富的mongodb驱动库,可以方便地实现过滤查询功能。接下来,我们将详细介绍如何在Golang中使用mongodb进行过滤查询,帮助大家更好地应用和理解这一功能。

问题内容

我正在尝试获取与特定查询匹配的数据列表,但收到此错误


"(atlaserror) merchant is not allowed or the syntax is incorrect, see
the atlas documentation for more infORMation"
func ...

var result []*model.Package

    ctx, cancel := context.WithTimeout(ctx, 10*time.Second)
    defer cancel()

    tokenData, err := middleware.CtxValue(ctx)

    if err != nil {
        return nil, err
    }

    orQuery := []bson.M{}
    merchant := "abc"
    completedQuery := bson.M{"status": "completed"}
    cancelledQuery := bson.M{"status": "cancelled"}
    orQuery = append(
        orQuery,
        cancelledQuery,
        completedQuery)
    limit64 := int64(limit)
    page64 := int64(page)
    match := bson.M{"$match": bson.M{"$nor": orQuery}}
    var filterQuery primitive.M

    if tokenData.Role == "admin" && merchant != nil {
        filterQuery = bson.M{"merchant": bson.M{"id": merchant}}
    } else {
        filterQuery = bson.M{"user": bson.M{"id": tokenData.Id}}
    }
    paginatedData, err1 := paginate.New(r.Collection).Context(ctx).Limit(limit64).Page(page64).Aggregate(match, filterQuery)
    if err1 != nil {
        return nil, err1
    }


...

解决方法

filterquery,似乎包含 { "merchant" : { "id" : "abc" } },被单独传递给 .aggregate()。但是聚合框架期望接收代表一系列管道阶段的东西。 文档中概述了每个阶段,预计以 $ 字符开头,例如 $match 阶段。

当前数据库正在尝试将 merchant 作为管道的 options 进行处理(请参阅 这里和此处)。但这样的选项不存在,因此出现错误消息。

要解决此问题,您应该将 filterquery 逻辑合并到您正在构建和传递的现有 match 变量/阶段中。或者,您可以将 filterquery 包装在不同的 $match 中,然后将它们(作为单个参数)传递给 .aggregate()

此示例显示他们构建了多个阶段并且然后通过 mongo.pipeline{...}:

将它们一起提交给 .aggregate()
// create the stages
matchStage := bson.D{{"$match", bson.D{{"toppings", "milk foam"}}}}
unsetStage := bson.D{{"$unset", bson.A{"_id", "category"}}}
sortStage := bson.D{{"$sort", bson.D{
    {"price", 1},
    {"toppings", 1}},
}}
limitStage := bson.D{{"$limit", 2}}

// pass the stage into a pipeline
// pass the pipeline as the second paramter in the Aggregate() method
cursor, err := coll.Aggregate(context.TODO(), mongo.Pipeline{matchStage, unsetStage, sortStage, limitStage})

以上就是过滤查询 mongodb Golang的详细内容,更多请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: 过滤查询 mongodb Golang

本文链接: https://lsjlt.com/news/563746.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 过滤查询 mongodb Golang
    php小编西瓜今天要为大家介绍的是关于过滤查询mongodb的Golang实现。在使用mongodb数据库进行数据查询时,我们经常需要对查询结果进行过滤,以满足特定的条件。Golang...
    99+
    2024-02-12
  • golang mongodb 查询
    Golang与MongoDB的联合使用,成为了很多开发人员的选择。这篇文章将介绍如何在Golang中使用MongoDB进行查询操作。简介MongoDB是一个流行的开源文档数据库,它被广泛地用于各种应用程序中。在Golang中,可以使用一些流...
    99+
    2023-05-21
  • MongoDB Driver 中通过过滤器实现文档查询
    一、举例:在物流币点击记录里面查询出 同一IP,同一条线路,同一页面,四小时内点击次数     思路:1、根据当前查询的时间将时间回退到四小时前,然后将四小时前的时间转换为时间戳,然后组合其它条件查询 出大于对应时间戳的所有记录数。 ...
    99+
    2017-11-06
    MongoDB Driver 中通过过滤器实现文档查询 数据库入门 数据库基础教程 数据库 mysql
  • mongodb id 查询golang
    MongoDB是一个非常流行的文档数据库,在现代互联网应用程序中广泛使用。在使用MongoDB时,有时需要使用唯一的ID来查询文档。这个唯一的ID是MongoDB中的_object ID_。在本文中,我们将探讨如何在Go中使用MongoDB...
    99+
    2023-05-15
  • Elasticsearch查询过滤解惑
    简介 之前一直被查询(query)与过滤(filter)所困惑,为什么同样是bool在一个地方就是查询,在另一个地方就是过滤了。 后来仔细的看了一下官方文档才发现,都是查询,只是区分: query context(查询上下文) filte...
    99+
    2018-08-19
    Elasticsearch查询过滤解惑
  • mongodb中根据时间过滤进行查询的操作方法
    目录MongoDB中简单的根据时间过滤进行查询补充:如何根据日期过滤/查找MongoDB中的记录问题:如何根据日期过滤/查找MongoDB中的记录解答mongodb中简单的根据时间过滤进行查询 目的:查询当某天的文档信息...
    99+
    2023-05-12
    mongodb时间过滤查询 mongodb时间查询 mongodb时间过滤
  • 怎么使用golang查询MongoDB
    这篇文章主要介绍了怎么使用golang查询MongoDB的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用golang查询MongoDB文章都会有所收获,下面我们一起来看看吧。MongoDB的特性Mongo...
    99+
    2023-07-05
  • 使用 golang for MongoDB 创建分页过滤器
    问题内容 我有一个很大的过滤器,我将提供它的一个片段。我试图通过异教化过滤器的映射,但收到错误消息 the match filter must be an expression in ...
    99+
    2024-02-05
  • RocketMQ消息过滤与查询的实现
    消息过滤 RocketMQ分布式消息队列的消息过滤方式有别于其它MQ中间件,是在Consumer端订阅消息时再做消息过滤的。 RocketMQ这么做是还是在于其Producer端写入...
    99+
    2024-04-02
  • EntityFrameworkCore实现软删除与查询过滤器
    注意:我使用的是 Entity Framework Core 2.0 (2.0.0-preview2-final)。正式版发布后,功能可能存在变动。 继续探索Entity Frame...
    99+
    2024-04-02
  • 如何实现一个Laravel查询过滤器
    今天小编给大家分享一下如何实现一个Laravel查询过滤器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。上下文在撰写本文时,...
    99+
    2023-07-05
  • Golang对mongodb进行聚合查询详解
    目录1.BSON介绍2.过滤查询2.1go查询2.2bucket命令3.聚合查询3.1mongo命令使用3.2go 聚合查询MongoDB的环境搭建参考前面一篇通过mongo-driver使用说明 GO 包管理机制 1....
    99+
    2023-02-10
    Golangmongodb聚合查询 Golangmongodb mongodb聚合查询
  • 使用 Golang 准备 MongoDB 查询的方法
    哈喽!今天心血来潮给大家带来了《使用 Golang 准备 MongoDB 查询的方法》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golan...
    99+
    2024-04-04
  • 查询MongoDB oplog.rs
    oplog是Capped Collection,默认分配5%的空闲磁盘空间。来看下oplog.rs的样子:rs_test:SECONDARY> use local switched...
    99+
    2024-04-02
  • 3.mongodb 查询
    MongoDB 查询文档使用 find() 方法。find() 方法以非结构化的方式来显示所有文档。语法格式如下:db.collection.find(query, projection)query :可选...
    99+
    2024-04-02
  • MongoDB的查询
        MongoDB使用find来查询,不指定任何参数说明是对整个集合的文档查询。find查询    指定返回的键 ...
    99+
    2024-04-02
  • MongoDB(3): 查询
    一、普通查询find方法语法:  find([条件,需显示的字段]);注意:  1、如果没有条件,则查询全部  2、如果没有显示指定_id字段隐藏,则默认会显示,显示指定隐藏,...
    99+
    2024-04-02
  • mongodb慢查询
    开启 Profiling 功能1. 直接在启动参数里直接进行设置      启动MongoDB时加上–profile=1 即可     还可以慢查...
    99+
    2024-04-02
  • SqlServer系列笔记——查询过滤分组排序
    DISTINCTDISTINCT是对整个结果集进行数据重复处理的,而不是针对每一个列,因此下面的语句并不会只保留Fdepartment进行重复值处理:    SELECT...
    99+
    2024-04-02
  • MySQL 查询语句SELECT和数据条件过滤
    MySQL 查询语句SELECT ,主要是用 * 表示任意字段,也可以写id,name,content 等,数据条件过滤主要是between,and,or ,WHERE,in,like,li...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作