用PHP查询mongo数据时,条件是某个字段(A为数组)不为空,但是有的记录中并没有字段A,这个条件怎么写?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用PHP查询mongo数据时,条件是某个字段(A为数组)不为空,但是有的记录中并没有字段A,这个条件怎么写?相关的知识,希望对你有一定的参考价值。

类似这样$collection->find(array('_id'=>array('<>'=>''))),这个是查_id不为空的,_id是每条记录中都存在的字段。mongoDB有$exists方法可以判断某个字段是否存在,但是php的写法是什么?

参考技术A $collection->find(array('字段名' => array('$exists' => 1)))本回答被提问者采纳 参考技术B $sql = "SELECT * FROM XX ";
$result = mysql_query($sql);
$res = mysql_fetch_array($result,MYSQL_ASSOC);
$bool = array_key_exists('需要查找的字段名',$res);

$bool 为真说明有这个字段

mongo一个字段有两个条件进行查询

条件:查询status:2,has_pay:true,amount:不等于0,type:A或者空(type类型有4个,分别是A、B、C、以及部分字段为空)的订单
 

反向查询:

db.order.find( "status": NumberInt(2), "has_pay": true, "amount": $ne: NumberInt(0) ,$and: [ "type": $ne: "C" , "type": $ne: "B" ])

或者

db.order.find( "status": NumberInt(2), "has_pay": true, "amount": $ne: NumberInt(0) , $nor: [ "type": "C" , "type": "B" ] ) 

 

正向查询:

db.order.find( "status": NumberInt(2), "has_pay": true, "amount": $ne: NumberInt(0) , $or: [ "type": "A" , "type": null ] )

 

以上是关于用PHP查询mongo数据时,条件是某个字段(A为数组)不为空,但是有的记录中并没有字段A,这个条件怎么写?的主要内容,如果未能解决你的问题,请参考以下文章

mongodb查询,如何只查询出某一个字段的值?

php mongo条件有and和or时应该怎样写

MySQL 左连接时,查询条件查询某个字段为空或者为特定值解决方案

MySQL 左连接时,查询条件查询某个字段为空或者为特定值解决方案

Mongo查询语句

在SQL中,如何查询某一字段中最大值的数据