我需要有'。'的關鍵字段。在他們中。有沒有辦法做到這一點? (我無法編碼它們)你如何在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