You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell通过mongoimport导入含LUUID类型ID的JSON文件

解决Mongo2Go导入带LUUID类型ID的JSON测试数据问题

我来帮你搞定这个问题!你遇到的核心问题是:MongoDB里的LUUID(也就是C# Guid对应的存储类型)本质是BinData子类型3,而你尝试的那些LUUID()或$LUUID()语法并不是MongoDB导入工具认可的标准格式,同时你的示例里还有JSON语法错误(比如Name : Foo里的Foo没加引号)。

正确的JSON格式(MongoDB扩展JSON)

MongoDB的导入工具(包括Mongo2Go依赖的底层工具)需要遵循MongoDB扩展JSON规范,对于LUUID,你需要用$binary对象来表示,具体格式如下:

{ 
  "_id": { "$binary": { "base64": "SYSYimU1S02RTo5GUXBmXw==", "subType": "03" } }, 
  "Date" : { "$date": "2014-03-20T03:09:27.000+01:00" }, 
  "Name" : "Foo" 
}

关键细节说明

  1. LUUID的BinData表示:
    LUUID对应MongoDB BinData的子类型03(Legacy UUID,和C# Guid的字节顺序一致)。你需要把目标Guid转换成对应的base64编码字节数组:
    比如你的Guid 8a95184b-5125-4b0d-914e-8e4650f19b5c,在C#里可以这样转换:

    var targetGuid = Guid.Parse("8a95184b-5125-4b0d-914e-8e4650f19b5c");
    var guidBytes = targetGuid.ToByteArray();
    var base64String = Convert.ToBase64String(guidBytes);
    // 得到的base64就是:SYSYimU1S02RTo5GUXBmXw==
    
  2. JSON语法正确性:
    你之前的所有选项里,Name : Foo都没有给字符串加引号,这是标准JSON的语法错误,会直接导致导入失败,必须写成"Name" : "Foo"。

  3. 关于Mongo Shell语法的误区:
    你尝试的LUUID()或$LUUID()是Mongo Shell里的快捷语法,但不是标准JSON格式,导入工具无法识别,必须用扩展JSON的$binary格式(或者v1版本的BinData(3, "base64String"),但后者属于Shell语法,部分严格的JSON解析器可能不支持)。

验证方法

你可以在Mongo Shell里运行BinData(3, "SYSYimU1S02RTo5GUXBmXw=="),会得到对应的LUUID值,确认和你的目标Guid一致后再写入JSON文件导入。

内容的提问来源于stack exchange,提问作者Azeristar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:01:55