英文:
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
没有任何B
(Bs
为空),它应该被定义为零值([]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 B
s (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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论