我需要有'。'的关键字段。在他们中。有没有办法做到这一点? (我无法编码它们)你如何在Mongodb中用'。'存储密钥在他们的
2
A
回答
4
来自MongoDB docs“the”。“字符不能出现在键名称的任何地方“。它看起来像你必须提出一个编码方案或没有。
0
对于PHP,我用HTML值替换期间。那是"."
。
IT卖场里的MongoDB这样的:
"validations" : {
"4e25adbb1b0a55400e030000" : {
"associate" : "true"
},
"4e25adb11b0a55400e010000" : {
"associate" : "true"
}
}
和PHP代码...
$entry = array('associate' => $associate);
$data = array('$set' => array('validations.' . str_replace(".", `"."`, $validation) => $entry));
$newstatus = $collection->update($key, $data, $options);
2
你需要躲避键。由于看起来大多数人不知道如何正确地转义字符串,因此步骤如下:
- 选择一个转义字符(最好选择一个很少使用的字符)。例如。 '〜'
- 为了逃避,首先用转义字符前面加上一些序列替换转义字符的所有实例(例如'〜' - >'〜t'),然后替换您需要转义的任何字符或序列序列预置了您的转义字符。例如。 '' - >'〜p'
- 对于unescape,首先从第二个转义序列的所有实例(例如'〜p' - >'。')中移除转义序列,然后将转义字符序列转换为单个转义字符例如,“〜S” - >“〜”)
另外请记住,蒙戈也不允许键与“$”开头,所以你必须做类似的还有
的东西在这里的一些代码它是这样做的:
// returns an escaped mongo key
exports.escape = function(key) {
return key.replace(/~/g, '~s')
.replace(/\./g, '~p')
.replace(/^\$/g, '~d')
}
// returns an unescaped mongo key
exports.unescape = function(escapedKey) {
return escapedKey.replace(/^~d/g, '$')
.replace(/~p/g, '.')
.replace(/~s/g, '~')
}
+0
如果你得到'。〜p'这样的字符串,这个转义仍然可以中断。这里转义字符串将是'〜p〜p〜p'。 Unescaping会给你'。〜..',这与实际的字符串不同。 – jvc 2017-09-18 08:34:46
+1
@jvc你是对的!我已经修复了解释和示例转义函数。让我知道他们是否还是坏了! – 2017-09-19 02:20:49
相关问题
- 1. Android的密钥存储提供商 - 如何存储密钥
- 2. 如何在JSONStore中存储加密密钥/密码
- 3. 使用KeyChainItemWrapper在KeyChain中存储密钥
- 4. 在Android上存储密钥
- 5. 在mongodb中存储公共SSH rsa密钥是否安全?
- 6. SSL中使用的信任存储和密钥存储如何?
- 7. 如何将私钥存储在密钥容器中?
- 8. 存储密钥
- 9. 如何在android中安全地存储加密密钥?
- 10. 如何在C++中安全地存储AES加密密钥?
- 11. 如何在.NET中存储加密密钥
- 12. 如何安全地在.Net中存储加密密钥?
- 13. 如何在java中安全地存储加密密钥?
- 14. 如何使用Android密钥存储提供程序存储密钥
- 15. 如何使用VB.NET中存储在web.config中的密钥加密字段?
- 16. 在php文件中存储密钥
- 17. 在Java HashMap中存储两次“密钥”?
- 18. 在设置中存储密钥阵列
- 19. 在android中存储RSA密钥对
- 20. 将会话密钥存储在localstorage中
- 21. 在pkcs11密钥库中存储证书
- 22. 在Android中存储会话密钥
- 23. 如何在Azure密钥保管库中保护Blob存储访问密钥
- 24. 解密存储Java密钥存储
- 25. 使用存储在KeyStore中的密钥加密领域
- 26. 如何包装/存储TripleDESCryptoServiceProvider的密钥
- 27. 如何在Rails中存储API的密钥?
- 28. 如何在IDictionary中存储相同的密钥?
- 29. ECDSA密钥存储
- 30. 存储AES密钥
这里给出了一些很好的解决方案 - http://stackoverflow.com/questions/12 397118/mongodb-dot-in-key-name – 2016-03-14 06:28:52