Mongoid 不在查询中
Posted
技术标签:
【中文标题】Mongoid 不在查询中【英文标题】:Mongoid not in query 【发布时间】: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
【问题讨论】:
【参考方案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
。
【讨论】:
以上是关于Mongoid 不在查询中的主要内容,如果未能解决你的问题,请参考以下文章