如何检查mongoid中的文档中是否存在嵌入文档?

时间:2012-05-10 03:46:50

标签: ruby-on-rails mongoid

如何在Ruby on Rails中使用mongoid检查文档是否存在嵌入文档?假设我的文档user包含nameemail,并且可能包含nicknames嵌入文档。现在,如果我运行user.first.nicknames并且user中没有nicknames嵌入文档,则会出错。我尝试了matches?exists?,但它们无效。

谢谢!

4 个答案:

答案 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"}}

一样简单