如何在Ruby on Rails中使用mongoid检查文档是否存在嵌入文档?假设我的文档user
包含name
,email
,并且可能包含nicknames
嵌入文档。现在,如果我运行user.first.nicknames
并且user
中没有nicknames
嵌入文档,则会出错。我尝试了matches?
和exists?
,但它们无效。
谢谢!
答案 0 :(得分:9)
在这里得到其他答案的一点帮助后,我发现了一些对我有用的东西,我认为这就是原始海报的内容;
Model.where(:"subdoc.some_attribute".exists => true)
这将返回子文档中存在“some_attribute”的所有文档。 注意符号的语法,这就是我所缺少的。
答案 1 :(得分:3)
如果它不存在,则返回true User.first.nicknames.nil?
如果它存在,则返回true:User.first.nicknames.present?
答案 2 :(得分:2)
你可以User.where(:nicknames.exists => true).include?(user)
。
User.where(:nicknames.exists => true)
将仅返回包含nicknames
。
答案 3 :(得分:0)
应该像{"user":{"$exists":"nicknames"}}