Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MongoDB中将Guid存储为字符串有哪些缺点?_Mongodb_Mongodb .net Driver - Fatal编程技术网

在MongoDB中将Guid存储为字符串有哪些缺点?

在MongoDB中将Guid存储为字符串有哪些缺点?,mongodb,mongodb-.net-driver,Mongodb,Mongodb .net Driver,应用程序在Mongo中保留Guid字段,并最终将其存储为BinData: "_id" : new BinData(3, "WBAc3FDBDU+Zh/cBQFPc3Q==") 这种情况下的优点是紧凑性,缺点在需要对应用程序进行故障排除时表现出来。guid是通过url传递的,当转到Mongo控制台时,不断地将它们转换为BinData有点痛苦 除了增加大小外,将Guid存储为字符串还有哪些缺点?一个优点是易于进行故障排除: "_id" : "3c901cac-5b90-4a09-896c-00e4

应用程序在Mongo中保留Guid字段,并最终将其存储为BinData:

"_id" : new BinData(3, "WBAc3FDBDU+Zh/cBQFPc3Q==")
这种情况下的优点是紧凑性,缺点在需要对应用程序进行故障排除时表现出来。guid是通过url传递的,当转到Mongo控制台时,不断地将它们转换为BinData有点痛苦

除了增加大小外,将Guid存储为字符串还有哪些缺点?一个优点是易于进行故障排除:

"_id" : "3c901cac-5b90-4a09-896c-00e4779a9199"
下面是C#中持久实体的原型:


缺点是mongodb被优化为使用BSON ObjectID,因此使用字符串作为ObjectID的效率会稍低一些。此外,如果您想对字符串对象使用基于范围的查询,那么将使用字典比较,这可能会给出与您预期不同的结果。除此之外,还可以使用字符串作为objectid。 请参见优化对象

除了gregor的答案之外,使用GUI目前将阻止使用新的聚合框架,因为它被表示为二进制类型。不管怎样,你可以用一种更简单的方式做你想做的事情。这将让mongodb bson库为您处理转换

public class MyClass
{
  [BsonRepresentation(BsonType.String)]
  public Guid Id { get; set;}
}

内存、空间、查询时间和索引大小都有一些,您可以做的是优化:这就是您实际在做的事情,抱歉没有完全阅读问题。您可能需要检查我的相关问题的答案:我可以使用例如BsonString作为变量的类型,比如'public BsonString Name{get;set;}只是为了注意,这不再是2.6中聚合框架的问题。@Idan,不要在类中使用BsonString,请使用字符串。驱动程序知道如何在这些文件之间进行序列化。我不认为在服务器2.6中没有这种限制。现在聚合框架可以使用guid了。
public class MyClass
{
  [BsonRepresentation(BsonType.String)]
  public Guid Id { get; set;}
}