C# MongoVue和Guid

C# MongoVue和Guid,c#,mongodb,guid,C#,Mongodb,Guid,我想使用mongoVue工具插入Guid,我该如何做 为了解释上下文,我使用复制我的集合的json(感谢文本视图选项卡)并将其粘贴到我的txt文件中,而不是使用mongodump。但是,当我创建一个新集合并将其粘贴到上一个副本中的json时,我的guid二进制类型现在显示为“对象Id”,问题是:我无法在C代码中将对象Id映射到我的guid字段。 这就是为什么我想知道是否可以在MongoVue中插入guid 谢谢各位。 John不确定它是否能回答您的问题,但这篇文章可以帮助您:当我插入以下类的实例

我想使用mongoVue工具插入Guid,我该如何做

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

谢谢各位。
John

不确定它是否能回答您的问题,但这篇文章可以帮助您:

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

public class C {
    public Guid Id;
    public int X;
}
在MongoVUE文本视图中看起来如下所示:

/* 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表示提供了一些实验性支持(请参阅GuidPresentation枚举及其使用位置)。

您可以使用以下符号在MongoVUE中输入GUID:

{
guid_field: new Guid("3bed978a-dc87-4fa4-8a1a-f0679387fa7e")
}
要插入新Guid(Guid.NewGuid()),可以输入:

{
guid_field: new Guid()
}

所有GUI都转换为二进制type-3值。

谢谢您的回答。他们的网站谈论对象id没有多大帮助。我想不幸的是,没有可能插入一个带有GuidI的文档。我用MongoVUE做了更多的实验,我能够重现这个问题。当插入_id具有二进制子类型3值的文档时,MongoVUE会将_id替换为ObjectId。我已经给MongoVUE的作者发了电子邮件询问此事。如果您有选择的话,阻力最小的路径是使用ObjectId而不是Guid。然而,我们确实打算完全支持guid。我右键单击并点击insert键,使用类型json并以您在textarea中显示的格式输入,但我得到了错误:“数据输入错误-请验证您的值”。详细信息显示:数据输入错误-请验证您的值JSON阅读器需要类型名称,但找到“Guid”。类型:System.IO.FileFormatException有什么想法吗?请注意,自MongoVUE 1.4.2及更新版本起,语法已更改:
Guid()已被弃用。而是使用“CSGUID(“…”)来解析.NET GUID。
from