MongoVue和Guid

时间:2011-06-17 09:13:06

标签: c# mongodb guid

我想使用mongoVue工具插入一个Guid,我该怎么办?

为了解释上下文,我曾经复制过我的集合的json(感谢文本视图选项卡)并将其粘贴到我的txt文件中而不是使用mongodump。但是当我创建一个新的集合并将其粘贴到以前的副本的json时,我的guid二进制类型现在显示为“”对象Id“”,然后问题是:我无法在我的C#代码中将对象ID映射到我的Guid领域。 这就是为什么我想知道是否可以在MongoVue中插入一个guid。

谢谢你们。 约翰

3 个答案:

答案 0 :(得分:2)

您可以使用以下表示法在MongoVUE中输入GUID:

{
guid_field: new Guid("3bed978a-dc87-4fa4-8a1a-f0679387fa7e")
}

要插入新的Guid(Guid.NewGuid()),您可以输入:

{
guid_field: new Guid()
}

所有guid都转换为Binary type-3值。

答案 1 :(得分:0)

不确定它是否可以回答您的问题,但这篇文章可以提供帮助:http://www.mongovue.com/2010/09/13/using-objectids/

答案 2 :(得分:0)

当我插入以下类的实例时:

public class C {
    public Guid Id;
    public int X;
}

在MongoVUE Text View中看起来像这样:

/* 0 */
{
  "_id": {
    "$binary": "q4TTjt8k4UyaJI6FwuZ1EQ==",
    "$type": "03"
  },
  "X": 1
}

其中GUID表示为子类型3的BSON二进制值,而不是ObjectId。

要在MongoVUE中插入GUID,您必须创建子类型3的BSON二进制值。困难的部分是计算要使用的Base64值。

此外,MongoDB中存在UUID的存储问题。目前支持UUID的三个驱动程序(C#,Java和Python)过去使用不同的字节顺序来表示UUID的二进制表示,这使得生活变得非常困难。

驱动程序的未来版本将为UUID使用新的二进制子类型4,并且将全部标准化为官方UUID网络字节顺序(16个字节的存储顺序与它们在UUID的字符串表示中出现的顺序相同)

当前版本的C#驱动程序(版本1.1刚刚发布)对处理不同的GUID表示有一些实验支持(参见GuidRepresentation枚举及其使用位置)。