首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongoid 4 .or不适用于复杂查询

Mongoid 4 .or不适用于复杂查询
EN

Stack Overflow用户
提问于 2014-03-19 16:49:16
回答 1查看 72关注 0票数 0

我知道Mongoid4还在测试中,也许我找到了一个bug,但是我很难理解为什么第一个查询工作,而第二个查询什么都不返回:

代码语言:javascript
复制
Product.or({sender_uid: params[:user_id]}, {receiver_uid: params[:user_id]})
Product.where({sender_uid: params[:user_id]}).or({receiver_uid: params[:user_id]})

这使得很难组合任何复杂的查询,因此任何指针都会受到欢迎。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-27 15:27:51

请参见以下示例:

代码语言:javascript
复制
Product 1: sender_uid = 1, receiver_uid = 2
Product 2: sender_uid = 2, receiver_uid = 1
Product 3: sender_uid = 1, receiver_uid = 2

params[:user_id] = 1

在第一个查询中,您得到的是ALLsender_uid receiver_uid等于1的产品。那是产品1,2和3。

在第二个查询中,您将查询sender_uid1的所有产品。这是Product1和Product3,然后(根据这个标准),产品的receiver_id = 1。产品1,而不是产品2都没有uid 1的接收器。所以,这就是为什么你什么也得不到。在第二个查询中所做的事情如下:

代码语言:javascript
复制
Product.where(sender_uid: params[:user_id]).where(receiver_uid: params[:user_id])

更新:

对评论的答复:

代码语言:javascript
复制
Product.or({ product_id: 1 }, { product_id: 2, sender_uid: 2 })

如您所见,or方法接收到条件的散列。每个查询都像一个where查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22512738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档