7

如何检查在 Ruby on Rails 中使用 mongoid 的文档是否存在嵌入文档?假设我有一个包含 , 的文档username并且email可能有一个nicknames嵌入的文档。现在,如果我运行user.first.nicknames并且其中user没有nicknames嵌入的文档,它将出错。我试过了matches?exists?但它们不起作用。

谢谢!

4

4 回答 4

14

在此处其他答案的帮助下,我发现了一些对我有用的东西,我认为这就是原始海报的想法;

Model.where(:"subdoc.some_attribute".exists => true) 

这将返回子文档中存在“some_attribute”的所有文档。注意符号的语法,这就是我所缺少的。

于 2014-01-24T18:12:58.483 回答
3

如果它不存在,这应该返回 true,如果它确实存在User.first.nicknames.nil?,这将返回 true:User.first.nicknames.present?

于 2012-05-10T04:02:16.357 回答
2

你可以做到User.where(:nicknames.exists => true).include?(user)

User.where(:nicknames.exists => true)将仅返回包含nicknames.

于 2013-03-03T18:28:24.930 回答
0

应该很简单{"user":{"$exists":"nicknames"}}

于 2012-05-10T04:00:40.727 回答