Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mongoid not in query

Tags:

I have some trouble with 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 

Test failed. I've tried to use where(:id => {'$nid' => [2]}), but it have same effect.

What is wrong? How to use "not in" condition with mongoid?

PS, "second" is ok, with "first" test passed, because id=1

like image 762
Mark Pegasov Avatar asked May 09 '12 00:05

Mark Pegasov


1 Answers

Try this query:

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

In MongoDB primary key has name _id. Mongoid tries to be friendly and partially hides this fact from the developer by aliasing it to id in the object model. But when you do queries, it cannot tell if you want primary key _id or some completely ordinary field id.

like image 66
Sergio Tulentsev Avatar answered Oct 12 '22 08:10

Sergio Tulentsev