Ruby
mongomapper

SymbolOperator (MongoMapper 由来)

Model.where(:id.ne => nil) などと書けるやつ。 MongoMapper の独自拡張で、 mongo-ruby-driver 直で使う場合は通らない。

[3] pry(main)> :id.ne
#<SymbolOperator:0x00007fb64e33a660 @field=:id, @operator="ne">
[4] pry(main)> :id.ne.class
SymbolOperator < Object
[5] pry(main)> :id.ne.class.ancestors
[
    [0] SymbolOperator < Object,
    [1] Comparable,
    [2] Object < BasicObject,
    [3] ActiveSupport::Dependencies::Loadable,
    [4] PP::ObjectMixin,
    [5] MongoMapper::Extensions::Object,
    [6] JSON::Ext::Generator::GeneratorMethods::Object,
    [7] Kernel,
    [8] BasicObject
]

ってなってるけど、 SymbolOperator が定義されてるのは Plucky gem のほう https://github.com/mongomapper/plucky/blob/master/lib/plucky/extensions/symbol.rb

Symbol に .ne メソッドなどをはやしていて、そのメソッドの返り値が SymbolOperator のインスタンス。という具合。

ショートハンドで書けて便利かと思いきや、 mongo-ruby-driver 直で使いたい場合の書き換えでミスりやすいので、 .where(:id => { '$ne' => nil }) みたいに書くようにしたほうがよさそう。