-1

1,如何通过python获取monogd中我的操作的返回值?我知道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}})
它工作。
为什么?

4

2 回答 2

3

这对我有用

last_error = db.runCommand({"getLastError":1})
于 2013-07-03T13:30:56.950 回答
1

1)您可以使用写关注关键字参数,以确保getLastError被调用。各种方法如下所述:

  • 安全:每次写入操作都使用 getlasterror?
  • j or journal : 阻塞直到写入操作被提交到日志。如果服务器在没有日志的情况下运行,则忽略。意味着安全=真。
  • 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
}

于 2012-05-30T08:40:43.063 回答