Mongoid不在查询中

Mar*_*sov 18 ruby ruby-on-rails mongodb nosql mongoid

我对mongoid有些麻烦:

  test "Test candidate" do
    User.create(:id => 1, :sex => User::Male, :country => 1, :city => 1)
    User.create(:id => 2, :sex => User::Female, :country => 1, :city => 1)
    User.create(:id => 3, :sex => User::Female, :country => 1, :city => 1)

    user = User.not_in(:id => [2]).second
    assert_not_equal(user.id, 2)
  end
Run Code Online (Sandbox Code Playgroud)

测试失败.我曾尝试使用where(:id => {'$ nid'=> [2]}),但它具有相同的效果.

怎么了?如何使用mongoid"not in"条件?

PS,"秒"是好的,通过"第一次"测试,因为id = 1

Ser*_*sev 38

试试这个查询:

user = User.not_in(:_id => [2]).second
Run Code Online (Sandbox Code Playgroud)

在MongoDB主键中有名称_id.Mongoid尝试友好,并通过id在对象模型中对其进行别名来部分隐藏开发人员的这一事实.但是当你进行查询时,它无法判断你是想要主键_id还是某些完全普通的字段id.


Pus*_*abh 11

user = User.where(:id.nin => [2,3,4,5])
Run Code Online (Sandbox Code Playgroud)

这是根据mongoid官方文档:http://mongoid.org/en/origin/docs/selection.html