我有一个集合,其文档的ID设置为MongoDb Object Ids(因此在数据库中显示为:
Collection1
"someId": {
"$oid": "5003cb802e28076412000001"
},
在另一个集合中,我引用了这些。但有时这些引用似乎存储为正确的oid:
Collection 2
"someForiegnId": {
"$oid": "5003cb802e28076412000001"
},
但有时候他们把它作为普通字符串放入数据库。
Collection 2
"someForiegnId": "5003cb802e28076412000001",
我的问题是 - 以oid格式存储这些外来引用是否很重要,还是只能是字符串?
答案 0 :(得分:3)
我知道我正在回答一个1岁的问题,但仍然。
始终希望您的数据库保持一致。无论您如何存储数据(例如IP地址为字符串"87.123.12.12"
,数组[87, 123, 12, 12]
或数字1467681804
),它应始终采用相同的方式。与您的数据相同:您必须选择一种格式并坚持下去。
您将选择的格式会影响您将使用多少存储空间以及查询数据的速度。最好的方法是将它们存储为ObjectID,原因如下:
所以即使我只有字符串表示 - 我会改为ObjectID(),在你的情况下,这肯定是更糟糕的切换(我知道你很可能已经这样做了)。
P.S。您可以按modifying the query in the following answer修改字段。