请知悉:本文最近一次更新为 4年 前,文中内容可能已经过时。

有的时候,我们知道MongoDB的查询json是什么样的,但是到PHP的数组中,就很容易写错了。

比如:$elemMatch这个查询操作符。


$elemMatch 数组查询操作用于查询数组值中至少有一个能完全匹配所有的查询条件的文档。语法格式如下:

{ <field>: { $elemMatch: { <query1>, <query2>, ... } } }

限制

  • 不能指定 $where 查询条件在 $elemMatch 内;
  • 不能指定 $text 查询条件在 $elemMatch 内;

于是看到个示例:

db.user.find(
{Type: {"$in": ["local","google"]},
Alerts:{$elemMatch:{"Frequency.Type":"daily","IsActive":true}}
})

这个查询如何转为PHP的查询数组呢?

有个答案给了个思路,直接用

var_export(json_decode(
'{
"Type": {"$in": ["local","google"]},
"Alerts":{ "$elemMatch": {"Frequency.Type":"daily","IsActive":true}}
}',true));

就可以得到:

array (
'Type' => array ( '$in' => array ( 0 => 'local', 1 => 'google', ), ),
'Alerts' => array ( '$elemMatch' => array (
'Frequency.Type' => 'daily',
'IsActive' => true,
), ),
)

这就是查询数组的指令了。

相关参考:
elemMatch query does not work in php


如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。

尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。


与《PHP如何优雅的将MongoDB的查询转换为指令》相关的博文:


留言

avatar
😀
😀😁😂😅😭🤭😋😘🤔😰😱🤪💪👍👎🤝🌹👌