首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用mongoid / moped执行upsert / push

如何使用mongoid / moped执行upsert / push
EN

Stack Overflow用户
提问于 2012-07-19 01:39:39
回答 2查看 4K关注 0票数 9

我正在使用Mongoid (v3)访问MongoDB,并想执行以下操作:

代码语言:javascript
复制
db.sessionlogs.update( 
    {sessionid: '12345'}, /* selection criteria */
    {'$push':{rows: "new set of data"}},  /* modification */
    true /* upsert */
);

这在mongo shell中工作得很好。这也正是我想要的,因为它是一个单一的原子操作,这对我来说很重要,因为我将调用它很多次。我不想做两个操作-- fetch和update。我通过mongoid尝试了很多东西,但都不能正常工作。

我如何才能在向MongoDB发送此命令的情况下摆脱MongoID?我猜在Moped级别上有一些方法可以做到这一点,但是这个库的文档基本上是不存在的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-19 01:39:39

在编写问题时找到答案...

代码语言:javascript
复制
criteria = Sessionlogs.collection.find(:sessionid => sessionid)
criteria.upsert("$push" => {"rows" => datarow})
票数 10
EN

Stack Overflow用户

发布于 2014-01-05 03:36:51

现在还不能使用moped,您可以使用find和modify操作来实现相同的功能(具有所有默认作用域和继承功能)

用于保存图中不存在的边的示例

代码语言:javascript
复制
edge = {source_id: session[:user_id],dest_id:product._id, name: edge_name}
ProductEdge.where(edge).find_and_modify(ProductEdge.new(edge).as_document,{upsert:true})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11547193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档