Mongoid没有查询(Mongoid not in query)

2019-07-29 08:11发布

我有一些麻烦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

测试失败。 我试图使用其中(:ID => { '$ NID'=> [2]}),但它具有相同的效果。

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

PS,“第二”是好的,与“第一”测试通过,因为ID = 1

Answer 1:

试试这个查询:

user = User.not_in(:_id => [2]).second

在MongoDB中的主键有名称_id 。 Mongoid试图友好和部分由它混淆从开发者隐藏这个事实id的对象模型。 但是,当你这样做的查询,它不能,如果你想主键告诉_id或一些完全普通场id



Answer 2:

user = User.where(:id.nin => [2,3,4,5])

这是因为每mongoid官方文档: http://mongoid.org/en/origin/docs/selection.html



文章来源: Mongoid not in query