Ruby on rails Mongoid不在查询中

Ruby on rails Mongoid不在查询中,ruby-on-rails,ruby,mongodb,mongoid,nosql,Ruby On Rails,Ruby,Mongodb,Mongoid,Nosql,我在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, :se

我在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
测试失败。我尝试使用where(:id=>{'$nid'=>[2]}),但效果相同

怎么了?如何在mongoid中使用“不在”条件

PS,“second”可以,通过了“first”测试,因为id=1

请尝试以下查询:

user = User.not_in(:_id => [2]).second
在MongoDB中,主键具有名称
\u id
。Mongoid试图表现友好,并通过在对象模型中将其别名为
id
,部分地向开发人员隐藏这一事实。但当您进行查询时,它无法判断您想要的是主键
\u id
还是一些完全普通的字段
id

user = User.where(:id.nin => [2,3,4,5])
这是根据mongoid官方文件: