- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我对 Go 和 Mongodb 都很陌生,当时我正在用 Go 和 Mongo 编写我的第一个 rest-api。我正在使用 mongo-go-driver
并且在 Go 中有以下 Modal
结构
type Modal struct {
Group []string `bson:"group" json:"group"`
Hostname string `bson:"hostname" json:"hostname"`
Overrides map[string]string `bson:"overrides" json:"overrides"`
Excludes []string `bson:"excludes" json:"excludes"`
}
我不想使用 mongo-db 提供的默认 ObjectId
字段作为我的主键,而是想将 Hostname
字段作为主键。
如果我将 Hostname
字段的类型设为 primitive.ObjectID
,那么 hostname
将是唯一的,但其值将随机生成mongodb 的字符串,而不是实际的主机名字符串值。
那么有什么办法可以做到这一点。
最佳答案
您可以使用 unique index强制/只允许给定字段的不同值,例如:
db.collectionname.createIndex( { "hostname": 1 }, { unique: true } )
如果你想使用官方 MongoDB 驱动程序创建这样的索引,你可以这样做:
indexName, err := coll.Indexes().CreateOne(
context.Background(),
mongo.IndexModel{
Keys: bson.D{{Key: "hostname", Value: 1}},
Options: options.Index().SetUnique(true),
},
)
但要知道在 MongoDB 中每个文档都必须有一个 _id
属性,所以执行上述操作后,文档将有一个自动生成的 _id
字段(属于 ObjectId
类型)。如果这不打扰您,您就完成了。
另请注意,您可以使用结构标签将 Modal.Hostname
映射到 _id
字段:
type Modal struct {
Group []string `bson:"group" json:"group"`
Hostname string `bson:"_id" json:"hostname"`
Overrides map[string]string `bson:"overrides" json:"overrides"`
Excludes []string `bson:"excludes" json:"excludes"`
}
再一次,你完成了。此解决方案的缺点是 MongoDB 中的文档将没有名为 hostname
的属性,因为它将存储在 _id
中。
关于mongodb - 在 Mongo-go-driver 中创建一个独特的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55921098/
对于 Prometheus 指标集合,如标题,我真的找不到只能通过 type Summary 完成的用例。 ,似乎它们都可以通过 type Histogram 以某种方式完成还。 让我们以请求并发度量
这个问题在这里已经有了答案: Ignore case while using duplicated (1 个回答) 关闭 9 个月前。 使用不区分大小写的 unique(tolower(x)) 删除
应用程序监控服务的一个有用功能是每次发生新的、独特的错误/问题/异常时发送警报(例如电子邮件)(即不是每次发生)。要么只是第一次,要么最多每次 X 次(一天或一周等)。例如,这可以通过 Visual
应用程序监控服务的一个有用功能是每次发生新的、独特的错误/问题/异常时发送警报(例如电子邮件)(即不是每次发生)。要么只是第一次,要么最多每次 X 次(一天或一周等)。例如,这可以通过 Visual
我想要相当于 DB2 中 MySql 的 GROUP_CONCAT 功能。 我尝试过 DB2 的 XML Aggrigate 函数来合并 murows。 SELECT a.ID, sub
我正在运行 python 数据库迁移脚本 (Flask-Migrate) 并添加了 alembic.ddl.imp import DefaultImpl 来解决第一组错误,但现在我收到以下错误。我正在
我有一个逗号分隔的文件“myfile.csv”,其中第 5 列是日期/时间戳。 (mm/dd/yyyy hh:mm)。 我需要列出所有包含重复日期的行(有很多) 我正在通过 cygwin 为 WinX
我使用的是 MySQL 5.7。 我有一个表格如下: -------------------------------------------------- | id | currentcy_id |
所以我有一个像这样的 ng-repeat: Join Ride /md-switch> 但是,每个 md-switch 都有相同的模型,因此当我在 Control
据我了解, Mongoose 预保存 Hook 在将文档插入集合之前但在验证发生之后触发。因此,如果一次验证失败,则不会调用预保存 Hook 。 就我而言,无论如何都会调用它们: 下面的简单代码的作用
如果我对我的目标文件执行此 grep,我会得到例如 275 作为结果。 但是我想学习 awk,所以在 awk 中尝试了这个: awk 'BEGIN { count=0 } /my pattern/
我是一名优秀的程序员,十分优秀!