2017-10-04 77 views
1

我想用pymongo添加驗證程序到MongoDB集合。用pymongo添加驗證程序到Mongodb集合

命令我想改編自here

運行等效於此:

db.runCommand({ 
    collMod: "contacts", 
    validator: { phone: { $type: 'string' } }, 
    validationLevel: "moderate" 
}) 
{ "ok" : 1 } 

而隨後如果一個非字符串數據類型插入錫手機領域

將拋出一個錯誤

使用python我做了以下操作:

db.command({'collMod': 'contacts', 
      'validator': {'phone': {'$type': 'string'}}, 
      'validationLevel': 'moderate'}) 
. 
. 
. 
InvalidDocument: Cannot encode object: Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'test_table'), 'contacts') 

我敢肯定,我的python解釋是錯誤的,這很清楚,但我一直無法找到正確的翻譯,或者這是否甚至可能在python

回答

1

我最終在這裏找到了解決方案。希望它可以幫助別人。

當然,當一切都失敗了閱讀文檔中......

..注意::鍵command文檔中的順序是 顯著(以下簡稱「動詞」必須先來),所以命令 需要多個密鑰(例如findandmodify) 應使用的一個實例:類:~bson.son.SON或 字符串和kwargs代替一個Python dict

鋁所以有效的是OrderedDict

query = [('collMod', 'contacts'), 
     ('validator', {'phone': {'$type': 'string'}}), 
     ('validationLevel', 'moderate')] 
query = OrderedDict(query) 
db.command(query) 
{'ok': 1.0} 
+0

工作正常。謝謝 :) – Adarsh