2

我希望添加到多个集合,同时更新 updated_at 时间戳(触摸)。我可以使用 mongo 驱动程序来做到这一点:

db.mycollection.update({"_id": ObjectId("911")},
 {
  $addToSet: { "hashtags": {$each: ["#test1", "#test5"]}, "new_hash": {$each: ["test9"]} },
  $set: {"updated": "current time 3"}
 }
 )

如何在 Rails 应用程序中使用 mongoid 在单个更新查询中执行此操作。现在,我需要使用 mongoid 进行 3 次写入:

my_object.add_to_set("hashtags", ["#test1", "#test5"])
my_object.add_to_set("new_hash", ["test9"])
my_object.touch
4

2 回答 2

2

您必须使用 Moped,Mongoid 驱动程序(此处的文档:http://mongoid.org/en/moped/docs/driver.html

像这样的东西应该可以解决问题:

my_query = {
 '$addToSet' => { "hashtags" => {'$each' => ["#test1", "#test5"]}, "new_hash" => {'$each' => ["test9"]} },
 '$set' => {"ts" => Time.now}
}
MyClass.collection.find('_id' => my_object.id).update(my_query)
于 2013-10-23T12:14:15.453 回答
0

我不确定,但如果你这样做:

my_object.hashtags += ["#test1", "#test5"]
my_object.new_hash += ["test9"]
my_object.save

我认为它只写一次,并且 updated_at 字段会自动更新。

于 2013-10-23T11:14:13.107 回答