gpt4 book ai didi

ruby-on-rails - Mongoid 5 : find_one_and_update with returnNewDocument

转载 作者:可可西里 更新时间:2023-11-01 10:03:10 27 4
gpt4 key购买 nike

Mongoid v5.1.2 是否有可能在与 find_one_and_update 一起使用时忽略 returnNewDocument 选项?

考虑以下代码:

next_number = TrackingId.where(id: id).find_one_and_update({
:$inc => {
auto_increment_counter: 1
}
},
upsert: true,
returnNewDocument: true
).auto_increment_counter

其中 auto_increment_counter 是 Integer field :auto_increment_counter, type: Integer, default: 0 在该类上。

然而,当没有找到文档时,它会创建一个,但不会返回新创建的文档。所以我从 find_one_and_update 返回了 nil 并且它中断了。

最佳答案

我怀疑 find_one_and_update 的 mongoid 实现会将 returnNewDocument 的标志更改为 return_new_document 或 $returnNewDocument。稍后我会看一下 mongoid 代码库并确认。

更新:所以我试了一下并查看了代码。后来我也能够在文档中确认这一点。您正在寻找的选项是 return_document,您将其设置为 :before 或 :after(参见文档:http://www.rubydoc.info/github/mongoid/mongoid/Mongoid%2FContextual%2FMongo%3Afind_one_and_update)

因此您的查询应该是:

next_number = TrackingId.where(id: id).find_one_and_update({
:$inc => {
auto_increment_counter: 1
}
},
upsert: true,
return_document: :after
).auto_increment_counter

关于ruby-on-rails - Mongoid 5 : find_one_and_update with returnNewDocument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36578583/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com