如何检查在 Ruby on Rails 中使用 mongoid 的文档是否存在嵌入文档?假设我有一个包含 , 的文档user
,name
并且email
可能有一个nicknames
嵌入的文档。现在,如果我运行user.first.nicknames
并且其中user
没有nicknames
嵌入的文档,它将出错。我试过了matches?
,exists?
但它们不起作用。
谢谢!
如何检查在 Ruby on Rails 中使用 mongoid 的文档是否存在嵌入文档?假设我有一个包含 , 的文档user
,name
并且email
可能有一个nicknames
嵌入的文档。现在,如果我运行user.first.nicknames
并且其中user
没有nicknames
嵌入的文档,它将出错。我试过了matches?
,exists?
但它们不起作用。
谢谢!
在此处其他答案的帮助下,我发现了一些对我有用的东西,我认为这就是原始海报的想法;
Model.where(:"subdoc.some_attribute".exists => true)
这将返回子文档中存在“some_attribute”的所有文档。注意符号的语法,这就是我所缺少的。
如果它不存在,这应该返回 true,如果它确实存在User.first.nicknames.nil?
,这将返回 true:User.first.nicknames.present?
你可以做到User.where(:nicknames.exists => true).include?(user)
。
User.where(:nicknames.exists => true)
将仅返回包含nicknames
.
应该很简单{"user":{"$exists":"nicknames"}}