我想要回Json的结果如下,
包含is it successfully functioning
(使用0/1)、modified contents
和modified data count
Json结果:
{"ok“:1,"msg”:{ "name“:"Moma","Age”:33},{ "name“:"Kara","Age”:44},"count":2}
已试用的代码如下:
我试着用.inserted_count
和.upserted_count
来计算修改的数字
x_new = json.dumps(x)
应该将数据传输到Json
似乎我知道很多逻辑,但不知道如何使逻辑工作。
import pymongo
import datetime
import json
def init_db(ip, db, coll):
try:
myclient = pymongo.MongoClient('mongodb://' + ip + '/')
mydb = myclient[db]
mycol = mydb[coll]
success_condition = "success on initializ operation"
except Exception as e:
success_condition = "failed on initializ operation"
return mydb, mycol, success_condition
# ins_data = insert_db_data
def ins_data(one_or_many_bool, insert_values_json):
try:
if one_or_many_bool == True:
x = mycol.insert_many(insert_values_json)
else:
x = mycol.insert_one(insert_values_json)
success_condition_insert = "success on ins_data operation"
except Exception as e:
success_condition_insert = "failed on ins_data operation"
return x , success_condition_insert
ip_input = input("Enter the ip: ")
exist_DB_name = input("Enter exist DB name: ")
exist_coll_name = input("Enter exist collection name: ")
mydb, mycol, success_condition = init_db(ip_input, exist_DB_name, exist_coll_name)
print(success_condition)
insert_one_or_many = input("U are update one or many values? ( 1 for many, 0 for one ): ")
newvalues_str = input("Enter new values: ")
one_or_many_bool = bool(int(insert_one_or_many))
insert_values_json =json.loads(newvalues_str)
x , success_condition_insert = ins_data(one_or_many_bool, insert_values_json)
print(success_condition_insert)
x_new = json.dumps(x)
print(x_new)
print(type(x_new))
Traceback (most recent call last):
File "C:\Users\chuan\OneDrive\Desktop\10.17_connect_mongoD_練習\test.py", line 56, in <module>
x_new = json.dumps(x)
File "C:\Users\chuan\AppData\Local\Programs\Python\Python310\lib\json\__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "C:\Users\chuan\AppData\Local\Programs\Python\Python310\lib\json\encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Users\chuan\AppData\Local\Programs\Python\Python310\lib\json\encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "C:\Users\chuan\AppData\Local\Programs\Python\Python310\lib\json\encoder.py", line 179, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type InsertManyResult is not JSON serializable
我想要的函数可以像这个那样在Json中输出
{"ok“:1,"msg”:{ "name“:"Moma","Age”:33},{ "name“:"Kara","Age”:44},"count":2 }
发布于 2022-10-19 06:26:44
.modified_count
和for modified_data in mycol.find().sort("_id", -1).limit(#num):
是关键
看下面,我很接近,这是我的解决方案
import pymongo
import datetime
import json
def init_db(ip, db, coll):
myclient = pymongo.MongoClient('mongodb://' + ip + '/')
mydb = myclient[db]
mycol = mydb[coll]
return mydb, mycol
def change_db_data(myquery_json, one_or_many_bool, newvalues_json ):
if one_or_many_bool == True:
x = mycol.update_many(myquery_json, newvalues_json)
else:
x = mycol.update_one(myquery_json, newvalues_json)
return x
ip_input = input("Enter the ip: ")
exist_DB_name = input("Enter exist DB name: ")
exist_coll_name = input("Enter exist collection name: ")
mydb, mycol = init_db(ip_input, exist_DB_name, exist_coll_name)
myquery_str = input("Enter ur query: ")
update_one_or_many = input("U are update one or many values? (ex:1 for many , 0 for one): ")
newvalues_str = input("Enter new values: ")
one_or_many_bool = bool(int(update_one_or_many))
myquery_json =json.loads(myquery_str)
newvalues_json =json.loads(newvalues_str)
x = change_db_data(myquery_json, one_or_many_bool, newvalues_json)
print(x)
print(x.modified_count, "documents updated.")
number_of_update_data = int(x.modified_count)
for modified_data in mycol.find().sort("_id", -1).limit(number_of_update_data):
print(modified_data)
# 1 means success
return_status_str = { "ok" : 1 , "msg" : modified_data , "count" : number_of_update_data}
print(return_status_str)
以及ur expect输出(我还没有很好地在msg
中打印出3个修改过的数据,但结果非常接近)
{'ok':1,'msg':{'_id':ObjectId('6348d73be94317989175dc31'),'name':'Kim','ID':0,'Age':44,'time':datetime.datetime(2022,10,17,9,11,24),'Update_ID':'99999'},'count':3}
https://stackoverflow.com/questions/74108321
复制相似问题