使用MongoDB shell时,如何使用guid数据类型(我在我的集合中用作_id)。
以下格式不起作用:
>db.person.find({"_id","E3E45566-AFE4-A564-7876-AEFF6745FF"});
感谢。
答案 0 :(得分:21)
您可以轻松使用:
.find({ "_id" : CSUUID("E3E45566-AFE4-A564-7876-AEFF6745FF")})
答案 1 :(得分:14)
您必须将_id值与BinData实例(不是字符串)进行比较。不幸的是,BinData构造函数采用Base64字符串而不是十六进制字符串。
您的GUID值在末尾缺少两个十六进制数字,因此出于本示例的目的,我将假设它们是“00”。以下值是等效的:
hex:“E3E45566-AFE4-A564-7876-AEFF6745FF00”(忽略破折号)
base64:“ZlXk4 + SvZKV4dq7 / Z0X / AA ==”
所以你的查询应该是:
> db.person.find({_ id:new BinData(3,“ZlXk4 + SvZKV4dq7 / Z0X / AA ==”)})
我假设二进制子类型已正确设置为3.如果没有,用什么驱动程序创建数据?
答案 2 :(得分:9)
您可以在查询前使用以下js函数,如下所示:
function LUUID(uuid) {
var hex = uuid.replace(/[{}-]/g, ""); // removes extra characters
return new UUID(hex); //creates new UUID
}
db.person.find({"_id" : LUUID("E3E45566-AFE4-A564-7876-AEFF6745FF"});
您可以将该函数保存在.js文件中并在进行查询之前加载或打开它,如果您从结果中复制该值,则应使用以下命令重命名该函数: