如何在Cloudant中更新Doc没有sql-db

时间:2016-06-15 13:59:33

标签: cloudant nosql

我正在关注Link以整合cloudant no sql-db。

有创建DB,查找全部,计数,搜索,更新的方法。现在我想在我的一个DB doc文件中更新一个键值。我怎么能实现这一目标。文档显示如

updateDoc(name,doc) 参数: name - 数据库名称 docID - 要更新的文档

但是当我传递我的数据库名称和文档ID时,它已经创建的投掷数据库无法创建数据库。但我想更新doc。所以任何人都可以帮助我。

以下是may table' employee_table'的文档之一。供参考 -

{
     "_id": "0b6459f8d368db408140ddc09bb30d19",
     "_rev": "1-6fe6413eef59d0b9c5ab5344dc642bb1",
     "Reporting_Manager": "sdasd",
     "Designation": "asdasd",
     "Access_Level": 2,
     "Employee_ID": 123123,
     "Employee_Name": "Suhas",
     "Project_Name": "asdasd",
     "Password": "asda",
     "Location": "asdasd",
     "Project_Manager": "asdas"
}

所以我想更新我的表' employee_table'上面的doc文件中的一些值。那么我必须传递什么参数进行更新。

1 个答案:

答案 0 :(得分:0)

首先,没有sql世界中没有名为table的概念。

第二,首先要更新文档,你需要根据文档的任何输入字段获取文档。您还可以使用Employee_ID或其他一些文档字段。然后使用database.get_query_result

db_name = 'Employee'
database = client.create_database(db_name,throw_on_exists=False)
EmployeeIDValue = '123123'
#here throw_on_exists=False meaning dont throw error if DB already present

def updateDoc (database, EmployeeIDValue):     
    results = database.get_query_result(
                    selector= { 'Employee_ID': {'$eq': EmployeeIDValue} }, )
    for result in results:
        my_doc_id = result["_id"]

    my_doc = database[my_doc_id] #===> this give you your document.

     '''Now you can do update'''
    my_doc['Employee_Name'] = 'XYZ'
    my_doc.save() ====> this command updates current document