【问题标题】:Mongoid not in queryMongoid 不在查询中
【发布时间】:2012-05-17 12:15:21
【问题描述】:

我在使用 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,“第二个”没问题,“第一个”测试通过,因为 id=1

【问题讨论】:

    标签: ruby-on-rails ruby mongodb mongoid nosql


    【解决方案1】:
    user = User.where(:id.nin => [2,3,4,5])
    

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

    【讨论】:

      【解决方案2】:

      试试这个查询:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-25
        • 1970-01-01
        • 1970-01-01
        • 2014-05-19
        • 2016-10-02
        • 2011-09-01
        • 1970-01-01
        相关资源
        最近更新 更多