返回顶部
首页 > 资讯 > 后端开发 > GO >使用golang检索dynamodb中的最新记录
  • 705
分享到

使用golang检索dynamodb中的最新记录

2024-04-04 23:04:24 705人浏览 八月长安
摘要

一分耕耘,一分收获!既然打开了这篇文章《使用golang检索dynamodb中的最新记录》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑

一分耕耘,一分收获!既然打开了这篇文章《使用golang检索dynamodb中的最新记录》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

我正在尝试检索插入到 dynamodb 表中的最新记录,表结构如下:

  • 日期(订单号)
  • id(分区键)
  • 价值

日期值是unix时间戳,这是一个示例JSON数据:

{
  "date": 1590312898,
  "id": "87a6614b-1d05-44af-ab4b-6bc0957796b3",
  "value": 36
}

我尝试使用 scaninput 函数将 limit 结果设置为 1,但我无法获得正确的顺序,因此我得到了错误的行。我尝试使用以下代码:

filt := expression.name("date").notequal(expression.value(nil))

    proj := expression.nameslist(expression.name("date"), expression.name("id"), expression.name("value"))

    expr, err := expression.newbuilder().withfilter(filt).withprojection(proj).build()

    if err != nil {
        fmt.println("Got error building expression:")
        fmt.println(err.error())
    }

    // build the query input parameters
    params := &dynamodb.scaninput{
        limit:                     aws.int64(1),
        expressionattributenames:  expr.names(),
        expressionattributevalues: expr.values(),
        filterexpression:          expr.filter(),
        projectionexpression:      expr.projection(),
        tablename:                 aws.string(tablename),
    }

    // make the dynamodb query api call
    result, err := svc.scan(params)

也许我必须使用 scanindexforward 参数,但我不明白如何以正确的方式设置它。

有什么建议吗?这是正确的方法吗?

提前致谢

解决方案更新:

我必须使用 queryinput 而不是 scaninput 函数才能使用 scaninputforward,这是新代码:

var queryInput = &dynamodb.QueryInput{
            TableName: aws.String(tableName),
            KeyConditions: map[string]*dynamodb.Condition{
                "Type": {
                    ComparisonOperator: aws.String("EQ"),
                    AttributeValueList: []*dynamodb.AttributeValue{
                        {
                            S: aws.String("SM"),
                        },
                    },
                },
            },
            ScanIndexForward: aws.Bool(false),
            Limit:            aws.Int64(1),
        }

        result, err := svc.Query(queryInput)


解决方案


首先,由于您的日期是分区键,因此每当您在后端进行扫描时,DynamoDB 都会单独调用每个分区。无论返回的顺序如何,都将是响应中的顺序。

如果您想使用 ScanIndexForward 检索此内容,那么您将查看排序(或范围键)

指定索引遍历的顺序:如果为true(默认),则按升序进行遍历;如果为 false,则按降序进行遍历。

具有相同分区键值的项目按排序键按排序顺序存储。如果排序键数据类型为 Number,则结果按数字顺序存储。对于 String 类型,结果按 UTF-8 字节顺序存储。对于 Binary 类型,DynamoDB 将二进制数据的每个字节视为无符号。

我建议您了解如何重新构建 DynamoDB 表以使用 Global Secondary Index,该表将使用所有项目都使用的分区键以及日期的排序键。然后,您可以使用 ScanIndexForward 查询并检索最大值。

否则您将不得不执行扫描,然后按订单进行后处理。

理论要掌握,实操不能落!以上关于《使用golang检索dynamodb中的最新记录》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注编程网公众号吧!

您可能感兴趣的文档:

--结束END--

本文标题: 使用golang检索dynamodb中的最新记录

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

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

猜你喜欢
  • 使用golang检索dynamodb中的最新记录
    一分耕耘,一分收获!既然打开了这篇文章《使用golang检索dynamodb中的最新记录》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑...
    99+
    2024-04-04
  • 使用Pyinstaller的最新踩坑实战记录
    前言 将py编译成可执行文件需要使用PyInstaller,之前给大家介绍了关于利用PyInstaller将python程序.py转为.exe的方法,在开始本文之前推荐大家可以先看下这篇文章,本文主要给大家...
    99+
    2022-06-04
    实战 最新 Pyinstaller
  • 如何使用 AWS Go SDK 仅更新 DynamoDB 中的单个字段
    问题内容 希望有人能够阐明我一直在努力解决的这个问题。 我在 dynamo 中有这个表,我们称之为 people ,在这个表中,我有 id 的属性作为我们的分区键、name、lastn...
    99+
    2024-02-06
  • golang函数错误处理中的日志记录最佳实践
    最佳实践:使用标准或第三方库进行日志记录。记录错误消息、堆栈跟踪和相关输入参数。根据严重性使用不同的日志级别记录错误。包含请求或上下文信息,如用户 id 和客户端 ip。嵌套错误以跟踪错...
    99+
    2024-05-02
    golang 日志记录 标准库
  • golang xorm 自定义日志记录器之使用zap实现日志输出、切割日志(最新)
    目录1.准备并下载好需要的包2. 连接postgresql数据库3. zap日志工具4.实现xorm 自定义日志记录器5.使用完整代码参考文档1.准备并下载好需要的包 xorm.io...
    99+
    2024-04-02
  • 学习Java和Django的最好方法:使用IDE记录笔记!
    学习Java和Django的最好方法:使用IDE记录笔记! 对于很多程序员来说,学习一门新的编程语言或框架时,最常见的方法是通过阅读书籍或观看在线教程进行学习。然而,这种方法往往会导致大量的笔记和代码片段分散在各种不同的地方,难以管理和整理...
    99+
    2023-07-04
    django 学习笔记 ide
  • 使用函数和缓存记录日志:Go 中的最佳实践。
    使用函数和缓存记录日志:Go 中的最佳实践 在 Go 语言中,日志记录是一项非常重要的任务。因为它可以帮助开发人员更好地理解代码的执行流程,诊断和解决问题。在本文中,我们将介绍使用函数和缓存记录日志的最佳实践,以及如何在 Go 中实现它。 ...
    99+
    2023-10-17
    日志 函数 缓存
  • 更新基本表中的记录使用的sql命令怎么写
    小编给大家分享一下更新基本表中的记录使用的sql命令怎么写,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!数据库更新就一种方法Up...
    99+
    2024-04-02
  • Java日志记录的新方式:使用Spring和Bash
    在Java应用程序中,日志记录是非常重要的一部分。它可以帮助我们追踪应用程序的行为、问题和异常情况。传统的日志记录方式是通过Java自带的log4j、logback等框架进行记录,但是这些框架的日志记录方式有时候会比较繁琐和复杂。本文将介...
    99+
    2023-06-21
    日志 spring bash
  • 最新C语言中getchar的使用
    目录getchar的使用1、首先,我们看一下这段代码:2、我们接着看下面的代码:3、那么我们为什么要使用缓冲区呢?4、缓冲区的类型5、缓冲区的刷新C语言】getchar 函数的正确使...
    99+
    2022-12-08
    getchar的使用 c语言getchar
  • Java项目中的日志记录:使用NPM包和Numy的最佳实践。
    Java项目中的日志记录:使用NPM包和Numy的最佳实践 在现代的软件开发中,日志记录是至关重要的一步。它不仅可以帮助开发人员在开发过程中调试代码,还可以在应用程序出现问题时帮助运维人员快速定位问题。在Java项目中,使用NPM包和Num...
    99+
    2023-10-07
    日志 npm numy
  • 使用 golang 检查字符串中存在的点数
    学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《使用 golang 检查字符串中存在的点数》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们...
    99+
    2024-04-05
  • 深入探索Golang中宏的使用场景
    Golang是一种开源的编程语言,它在近年来越来越受到程序员的欢迎。作为一种静态类型的语言,Golang提供了许多强大的特性,其中之一就是宏(Macro)。在本文中,我们将深入探索Go...
    99+
    2024-03-05
    golang 探索
  • 使用Python中的Numpy容器来记录日志:最佳实践和技巧。
    在日志记录中,使用Numpy容器可能不是最常见的做法,但是它确实是一个非常强大的工具,可以帮助我们更好地组织和管理日志数据。本文将介绍如何使用Numpy容器记录日志,并提供一些最佳实践和技巧。 什么是Numpy容器? Numpy是一个非常...
    99+
    2023-09-08
    容器 numpy 日志
  • python如何使用Get()方法检索字典中的值
    这篇文章主要介绍python如何使用Get()方法检索字典中的值,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!用Get()方法检索字典中的值通常情况下,可以在方括号中指定键来检索键的值。但是,当键不在字典中时,就可能...
    99+
    2023-06-27
  • 在spring boot3中使用native image的最新方法
    目录简介安装GraalVM添加Native Image支持构建spring boot3应用总结简介 在之前spring boot3文章中我们介绍了,spring boot3的一个重要...
    99+
    2023-01-31
    spring boot3使用native image spring boot3 native image
  • vue中的v-if基本使用(最新推荐)
    目录vue中的v-if基本使用vue中v-if的常见使用vue中的v-if基本使用 v-if:根据表达式的真假,切换元素的显示和隐藏(操作DOM元素) <body> ...
    99+
    2022-12-08
    vue v-if使用 vue中v-if的常见使用 vue中v-if
  • 如何在 Java 中使用最新的 NPM 框架?
    随着前端技术的不断发展,NPM(Node Package Manager)已经成为了前端开发不可或缺的工具。NPM 是一个包管理器,可以通过它方便地安装和管理 JavaScript 的包。Java 开发者也可以通过 NPM 来管理自己的包...
    99+
    2023-07-08
    容器 npm 框架
  • Java 日志记录的最佳实践:Linux 环境下使用 Git 管理。
    Java 日志记录的最佳实践:Linux 环境下使用 Git 管理 日志记录是软件开发中非常重要的一部分,它可以帮助开发人员追踪和调试代码。Java 的日志记录机制提供了一种可靠的方式来记录应用程序的状态和活动。在本文中,我们将讨论 Jav...
    99+
    2023-08-17
    linux 日志 git
  • 在go教程中使用shell编写日志记录器的最佳实践是什么?
    随着技术的不断发展,日志记录在软件开发中变得越来越重要。日志记录不仅可以帮助开发人员更好地了解软件的运行情况,还可以帮助我们解决一些问题。因此,如何记录有效的日志成为了软件开发的重要问题之一。本文将介绍在go教程中使用shell编写日志记...
    99+
    2023-06-22
    教程 日志 shell
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作