问题标签 [mongo-go-driver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
817 浏览

mongodb - 在 MongoDB 的 Go 客户端中,如何注册 Hook Decoder 来处理接口的解组 BSON?

我正在尝试使用 Go 来查看是否可以将当前项目转移到它。我当前的非 Go 代码库中有几个域模型,它们利用基于类型字段的多态性。

关于该主题的文档或文献并不多,而我一天左右的学习时间使遍历和研究其来源有点……好吧,我来了。

反正...

以下是基本接口和实现结构的示例:

它将有许多结构实现,因此我需要能够基于字段type中的字段执行切换,bson.Raw然后才能确定struct要使用哪个。

据我所知,RegisterHookDecoder[ docs ] [ source ] 正是我所需要的。但是,我无法让它真正启动,我不知道为什么。

解码器:

package main

我真的不确定我在这里缺少什么。我在明显的事情上犯错了吗?

LookupDecoder(filterType)ValueDecoderFunc实际上根据下面的代码找到了一个。我只是不确定这是否是一个包罗万象的东西。我对 Go 的了解还远远不够,无法断言更多。

无论如何,我感谢您阅读本文。感谢您的时间。

**编辑:更新以反映@icza 建议的更改

0 投票
1 回答
367 浏览

mongodb - mongo-go-driver get inserted document

Collection.InsertOne() returns a *InsertOneResult, which only contains the ID of the inserted document. To get the inserted document, you have to perform another Collection.Find() query. Is there a way to do this in a single step?

A current work around is to use Collection.FindOneAndUpdate() with Upsert set to true, as this returns a *SingleResult that can then be decoded into a struct, and sent back to the client.

0 投票
1 回答
1338 浏览

json - 从golang中的mongodb查询结果中删除一个字段

这是我来自 mongodb-go-driver 的函数:

该功能效果很好,但我_id在结果中得到了字段。我知道 mongodb 查询从查询​​结果中排除一个字段,但我不知道如何将它与FindOne()函数一起使用:

教程点

db.removeIdDemo.find({},{_id:0});

来自没有字段名的mongodb查询结果

db.collection.find({},{_id:0, t_number:1}).toArray().map(function(ele) {return ele.t_number} );

mongo 结果(nodejs)中删除 _id :

0 投票
2 回答
1402 浏览

mongodb - 如何用 Go 驱动程序替换 MongoDB 中的文档?

我正在尝试使用mongodb/mongo-go-driver. 从其文档中,一个文档可以替换为:

但是,如果我的字段超过 20 个怎么办。我想知道是否可以在不重新编写所有字段的情况下进行更新,我尝试了这样的方法:

但它会在过滤和替换时引发错误。如何正确替换整个文档?

0 投票
1 回答
53 浏览

mongodb - 通过 mongo-go-driver 使用 mongodb 本机函数

就像标题一样,如何使用 mongo-go-driver 来执行 mongodb 的原生函数,比如ISODate().getTime()?即使在 mongo 的官方文档中,我也找不到一个好的文档来执行此操作。

例如,查询

大致翻译为

但这样,最后看到的值不会是 mongo 中的 UNIX 时间戳,而是文字字符串“ISODate().getTime()”

注意:对于dummy的情况,最好不用在应用层创建时间戳,所以需要使用DB的功能

0 投票
0 回答
186 浏览

mongodb - 如何使用 mongo-go-driver 在 Mongodb 文档中设置 TTL 索引?

如何使用“mongo-go-driver”在文档中设置 TTL 索引?

假设这是我的文档模型:

在这里我插入新文档:

现在我希望这个会话将在几次后被删除。

我在文档中通过设置 TTL 使集合中的数据过期,但无法弄清楚如何使用 mongo-go-driver 在 go 中做同样的事情。

0 投票
1 回答
68 浏览

go - 如何在 Golang 内部结构中使用 omitempty 标志更新 Mongodb 字段

UserInfo也是一个结构。插入后如图所示。

在此处输入图像描述

我不想要该UserInfo字段为空时。我应该怎么办?谢谢您的帮助!

0 投票
0 回答
276 浏览

mongodb - 实现mongo go驱动接口的正确方法

我正在尝试为 mongo go 驱动程序编写接口来为我的 post_repo.go 编写单元测试,但出现此错误:

我的接口文件,取自这篇文章https://medium.com/better-programming/unit-testing-code-using-the-mongo-go-driver-in-golang-7166d1aa72c0

我的 post_repo.go 文件:

我的 posts_repo_test.go 测试工作正常,但前提是我在函​​数 newPosts.NewPostsDatabase() 中通过 newPosts.DatabaseHelper。我想我需要通过 *mongo.Database 才能使我的程序正常工作。

也许我误解了单元测试的工作原理。任何帮助

0 投票
1 回答
23 浏览

mongodb - 更新 mongo 文档

我有一个包含一组客户端的 mongo 文档。我希望能够通过用户 ID 更新客户名称。到目前为止,我有下面的代码。当我运行它时,它会出现多个写入错误。我的数据库中只有一个具有该 _id 的文档。如何修复我的代码?

代码:

0 投票
1 回答
31 浏览

mongodb - 每个数据库操作需要 30 秒

即使是最简单的代码:

运行需要 30 秒。

为什么它需要那么长时间才能运行?任何帮助表示赞赏!