1,我如何在monogd中获取我的操作的返回值,通过python ?我知道getLastError可以在javascript中使用。
2,设置修改有限制吗?如果我使用
collection.update({"notification":"yes"},{"$set":{ "idx":idx,"src_md5":src_md5,"src_size":src_size,"src_time":int(src_time)},"$addToSet":
{"server_list":host_name}})
它没有用。
但是当我使用
collection.update({"notification":"yes"},{"$set":
{"idx":idx,"src_md5":src_md5,"src_size":src_size},"$set":
{"src_time":int(src_time)},"$addToSet":{"server_list":host_name}})
成功了。
为什么?
我有用
last_error = db.runCommand({"getLastError":1})
1) 您可以使用 write concern 关键字参数来确保调用getLastError
。 下面介绍了各种方法:
- 安全:对每个写入操作使用 getlasterror?
- j 或日志:阻止,直到写入操作提交到日志。如果服务器在没有日志记录的情况下运行,则忽略。表示安全=真。
- w:(整数或字符串)如果这是副本集,则写入操作在复制到指定数字之前不会返回或标记的服务器集。表示安全=真。
您可以根据需要在不同的级别设置这些写入关注点:
- 连接级别:
- 数据库级别
- 集合级别
- 关于单个查询
2)您的查询看起来不错,这是一个测试:
db.test2.save({notification: 'yes'})
db.test2.update({"notification": "yes"}, {
"$set": {"idx": 'a', "src_md5": 'b', "src_size": 'c', "src_time": 1},
"$addToSet": {"server_list": 'stackoverflow'}
})
db.test2.find()
{
"_id" : ObjectId("4fc5decf0631996582479878"),
"idx" : "a",
"notification" : "yes",
"server_list" : [
"stackoverflow"
],
"src_md5" : "b",
"src_size" : "c",
"src_time" : 1
}