Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 带AND和OR条件的Mongoid查询_Mongodb_Mongoid - Fatal编程技术网

Mongodb 带AND和OR条件的Mongoid查询

Mongodb 带AND和OR条件的Mongoid查询,mongodb,mongoid,Mongodb,Mongoid,我正在为我正在创建的新应用程序使用MongoDB,我只需要其中的某些数据。我需要以下字段:当前(布尔)、位置、扇区和名称。“职位”字段填充四个值中的一个——“现金、SPVR、关闭和培训”,而“部门”字段填充两个值中的一个——“休息或工作”。我需要一个查询,该查询将提供存在以下条件的所有记录: 1.电流=真 2.Position=“SPVR”或“CASH”或Sector=“BREAK”和 3.名称不为空 我遇到的问题是,有数百条记录的值为BREAK,但大多数记录的名称字段中没有值。我不想要任何没有

我正在为我正在创建的新应用程序使用MongoDB,我只需要其中的某些数据。我需要以下字段:当前(布尔)、位置、扇区和名称。“职位”字段填充四个值中的一个——“现金、SPVR、关闭和培训”,而“部门”字段填充两个值中的一个——“休息或工作”。我需要一个查询,该查询将提供存在以下条件的所有记录: 1.电流=真 2.Position=“SPVR”或“CASH”或Sector=“BREAK”和 3.名称不为空

我遇到的问题是,有数百条记录的值为BREAK,但大多数记录的名称字段中没有值。我不想要任何没有与之关联的名称的记录。所以在这方面,在上面第2行,我猜OR可能是和

这是Mongoid语句的当前开始

get '/currentstate*' do
    StateTransaction.where( current: true, :position.in =>["SPVR", "CASH"] ).to_json

  end
任何帮助都将不胜感激

谢谢

它应该有用

StateTransaction.where(current: true, :name.ne => ["",nil]).and(
  StateTransaction.or(
    {:position.in =>["SPVR", "CASH"]},
    {sector: "BREAK"}
  ).selector
)

以下内容可以说更简单:

sts = StateTransaction.where(current: true, :name.ne => ["",nil])
sts.any_of(:position.in => ["SPVR", "CASH"], sector: 'BREAK')

我开始认为这不能在一个查询语句中完成。我没有读到任何东西表明这是可能的。我可以用任意的来表示或部分,但这样就省去了AND。我将尝试另一条路线。谢谢你的帮助,但不幸的是,它不起作用。该查询似乎仍在寻找头寸为SPVR或现金且该部门处于中断状态的记录。如果我更改扇区:“断开”到另一个字段,如电子邮件:xx@yy.com“,然后它将找到两个条件都为真的所有记录(position=SPVR和email=xx@yy.com),而不是一个或另一个。效果很好!非常感谢你!!