7

Ruby on Rails で mongoid を使用するドキュメントに埋め込みドキュメントが存在するかどうかを確認するにはどうすればよいですか? 、 、および埋め込まれたドキュメントuserがある可能性のあるドキュメントがあるとします。今実行すると、ドキュメントが埋め込まれていない場合、エラーが発生します。試してみましたが、うまくいきません。nameemailnicknamesuser.first.nicknamesusernicknamesmatches?exists?

ありがとう!

4

4 に答える 4

14

ここでの他の回答の助けを借りて、自分に合ったものを見つけました。これが元のポスターが念頭に置いていたものだと思います。

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

これにより、サブドキュメントに「some_attribute」が存在するすべてのドキュメントが返されます。シンボルの構文に注意してください。それは私が見逃していたものです。

于 2014-01-24T18:12:58.483 に答える
3

これは、存在しない場合はUser.first.nicknames.nil?trueを返し、存在する場合は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 に答える