php m 找不到mongodb,来自PHP的Mongodb查询-无法使其正常工作

试图做一个让我发狂的简单mongodb查询….我有以下表/ db:

[_id] => MongoId Object (

[$id] => 4f22efa1ef9dec8495b374bc

)

[h1] => a

[h2] => b

[h3] => c

[_id] => MongoId Object (

[$id] => 4f22efa1ef9dec8495b374bd

)

[h1] => d

[h2] => e

[h3] => f

使用mongo工具命令行并输入:

db.things.find({$or: [{'h1' : 'a'},{'h1': 'd'}]})

我得到:

{ "_id" : ObjectId("4f22efa1ef9dec8495b374bc"), "h1" : "a", "h2" : "b", "h3" : "c" }

{ "_id" : ObjectId("4f22efa1ef9dec8495b374bd"), "h1" : "d", "h2" : "e", "h3" : "f" }

没关系但是尝试从PHP执行相同操作,我什么也没得到?

$m = new Mongo();

$db = $m->selectDB('testdb');

$collection = new MongoCollection($db, 'things');

$query = array( '$or' => array( array('h1' => 'a')),

array('h1' => 'd'));

$cursor = $collection->find($query);

我看不到我在做什么错,但是我已经尝试了3天(或者我认为是这样),但无法正常工作.如果我使用’> =”< =''<>‘ ‘‘它可以正常工作,但使用’=’则不能.

谢谢你的努力 !

解决方法:

对于给定的示例,最好使用$in,即:

$collection->find(array('h1' => array('$in' => array('a', 'd'))));

至于为什么查询不起作用-您没有正确使用$或(或实际上).这是您在重新格式化的问题中输入的查询:

$query = array(

'$or' => array(

array('h1' => 'a')

),

array('h1' => 'd')

);

而您将需要:

$query = array(

'$or' => array(

array('h1' => 'a'),

array('h1' => 'd')

)

);

如果您查看mongodb错误日志,很可能会说出这种情况下该非法松散顶级数组的内容.

标签:mongodb,php

来源: https://codeday.me/bug/20191201/2083599.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值