Mingyong Chen

Results 42 comments of Mingyong Chen

> > 我在我这边测是没问题的,`InsertOne` 和 `Upsert` ,`created_at ` 的值都有被设置。你可以再检查检查你的代码,然后必要时需要你提供你那边的所有代码看看才知道是什么问题。 > > 代码如下实际测试,created_at 为 0001-01-01 00:00:00.000 ` type Test struct { mongox.Model `bson:"inline"` Name string Age int } test := Test{ Name:...

> > > > 我在我这边测是没问题的,`InsertOne` 和 `Upsert` ,`created_at ` 的值都有被设置。你可以再检查检查你的代码,然后必要时需要你提供你那边的所有代码看看才知道是什么问题。 > > > > > > > > > 代码如下实际测试,created_at 为 0001-01-01 00:00:00.000 `type Test struct { mongox.Model`bson:"inline"` Name string...

看看 https://go-mongox.dev/model.html

没有调用 mongox.InitPlugin 打开开关

> > 没有调用 mongox.InitPlugin 打开开关 > > 很抱歉,临时写了个例子遗漏了,我想我找到问题在哪里了 > > 另外,当文档已存在时,再运行该例子,会出现以下问题, > write exception: write errors: [After applying the update, the (immutable) field '_id' was found to have been altered...

我考虑一下修改设计,upsert 的时候不要调用 DefaultId 方法,由 mongodb 自己去生成,当时设计的时候有遇到你这个问题,忘了当时的想法是咋样的了。

目前的设计对于 insert 操作没问题,但是对于更新,upsert 操作就有问题,所以我要修改一下设计,对于更新操作,我要侵入式的修改用户传来的 updates 文档,加上 updatedat 字段的更新,考虑到不一定是这个命名,所以我还会以另一种方式获取到字段名,对于 uosert 操作也是一样,侵入式修改 updates 文档,然后通过 SetOnInsert 决定要不要设置 id 和 created 字段。 你觉得怎么样?

@CatDrinkCoffee 已经重构了设计,最新版本已经解决了我们所讨论的问题。 最新文档可参考 [内置 Model](https://go-mongox.dev/model.html)

理解你的疑问,我来解释一下这个问题吧。首先,先说明一下,通过 `aggregation.NewBuilder()` 获得的构建器,是用于构建聚合表达式的构建器,我们知道,聚合表达式(`Aggregation Expressions`) 和普通的 查询 / 更新表达式 在 `MongoDB` 里既有相似之处,也有显著区别。而你这里的: ``` bson.M{ "createdAt": bson.M{ "$gte": startTime, "$lt": endTime, }, } ``` 其实不算 **聚合表达式**,而是归属于 **查询表达式** 因此你不能用 `aggregation.NewBuilder()` 去构建,而是用 `queryBuilder :=...

好嘞,感谢提醒,我会尽快补充更详细的文档实例!