Mongo字段的null和empty有什么区别?

huangapple go评论86阅读模式
英文:

Mongo field null vs empty

问题

SQL有一个约定,即在字段不存在时将其设置为null。

在Mongo中是否有一个约定,即在字段未设置时将其设置为null或使用空值(如空数组)?

具体而言,我正在使用Go和Mongo 4.2以及官方的Go mongo驱动程序

例如,

type A struct {
	ID string `bson:"_id"`

	Bs []B `bson:"bs"`
}

type B struct {
	ID string `bson:"_id"`
}

如果一个A没有任何BBs为空),它应该被定义为零值([]B(nil))还是空数组([]B{})。

请注意,这会影响数据的存储方式:

对于零值

{
	"_id" : ...,
    "bs" : null
}

对于空值

{
	"_id" : ...,
    "bs" : [ ]
}

以及在InsertOne之前的构造(或一般插入),因为您希望为这样的对象预先分配内存。

英文:

SQL has the convention of leaving fields as null when not present.

Is there a convention in Mongo to leave the field as null or use an empty value (such as an empty array) if the field is not set?

To be specific, I am using Go and Mongo 4.2 with the official Go mongo driver.

For example,

type A struct {
	ID string `bson:"_id"`

	Bs []B `bson:"bs"`
}

type B struct {
	ID string `bson:"_id"`
}

If an A does not have any Bs (Bs is empty), should it be defined as a zero-value ([]B(nil)) or as an empty array ([]B{}).

Note this affects the way the data is stored:

for zero-value

{
	"_id" : ...,
    "bs" : null
}

vs for empty value

{
	"_id" : ...,
    "bs" : [ ]
}

As well as construction before InsertOne (or insertion in general), since you would want to make sure memory is allocated beforehand for such objects.

答案1

得分: 1

在Go语言中,字符串本身不能为null,但是字符串的指针可以为null,所以可以使用指针来表示。

英文:

In GO a string can not be null but a pointer to a string can be null so just use a pointer.

huangapple
  • 本文由 发表于 2022年1月1日 06:55:15
  • 转载请务必保留本文链接:https://go.coder-hub.com/70546092.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定