如何在 WHERE 中使用 IFNULL() 表达式从 PHP 查询 MongoDB?
How do I query MongoDB from PHP with IFNULL() expression inside WHERE?
我使用此查询将 NULL 值查询为“0”:
select * from myTable where IFNULL(field_id, 0) = 0
如何使用 PHP 在 MongoDB 中实现同样的效果?
我的代码:
/**
* @var MongoDB
*/
$db = $this->getMongoDbHandler();
/**
* @var MongoCollection
*/
$coll = $db->selectCollection('myColl');
/**
* @var MongoCursor
*/
$cursor = $coll->find($where);
我该如何组成$where
数组?
我想我应该这样做:
$where['field_id'] = [
'$ifNull' => ['field_id', 0]
];
但是我应该在哪里指定所需的值?
谢谢!
创建一个变量来保存 return 空合并表达式的 JavaScript 函数。这是一些示例测试文档,用于在 mongo shell:
中对此进行测试
db.test.insert([
{ _id: 1, field_id: 0 },
{ _id: 2, test_field: 1 },
{ _id: 3, field_id: null },
{ _id: 4, field_id: 3 }
])
我希望我的查找查询使用 $where
运算符来 return 具有 _id
s 1,2 和 3 的文档,因此查询的输出
db.test.find({ "$where": "function() { return (this.field_id || 0) == 0; }" })
会是
/* 0 */
{
"_id" : 1,
"field_id" : 0
}
/* 1 */
{
"_id" : 2,
"test_field" : 1
}
/* 2 */
{
"_id" : 3,
"field_id" : null
}
此 PHP 示例演示了如何使用 javascript 代码搜索集合以使用上述相同概念减少结果集:
<?php
/**
* @var MongoDB
*/
$db = $this->getMongoDbHandler();
/**
* @var MongoCollection
*/
$coll = $db->selectCollection('myColl');
/**
* @var JavaScript code
*/
$js = "function() { return (this.field_id || 0) == 0; }" ;
/**
* @var MongoCursor
*/
$cursor = $coll->find(array('$where' => $js));
foreach ($cursor as $doc) {
var_dump($doc);
}
?>
我使用此查询将 NULL 值查询为“0”:
select * from myTable where IFNULL(field_id, 0) = 0
如何使用 PHP 在 MongoDB 中实现同样的效果?
我的代码:
/**
* @var MongoDB
*/
$db = $this->getMongoDbHandler();
/**
* @var MongoCollection
*/
$coll = $db->selectCollection('myColl');
/**
* @var MongoCursor
*/
$cursor = $coll->find($where);
我该如何组成$where
数组?
我想我应该这样做:
$where['field_id'] = [
'$ifNull' => ['field_id', 0]
];
但是我应该在哪里指定所需的值?
谢谢!
创建一个变量来保存 return 空合并表达式的 JavaScript 函数。这是一些示例测试文档,用于在 mongo shell:
中对此进行测试db.test.insert([
{ _id: 1, field_id: 0 },
{ _id: 2, test_field: 1 },
{ _id: 3, field_id: null },
{ _id: 4, field_id: 3 }
])
我希望我的查找查询使用 $where
运算符来 return 具有 _id
s 1,2 和 3 的文档,因此查询的输出
db.test.find({ "$where": "function() { return (this.field_id || 0) == 0; }" })
会是
/* 0 */
{
"_id" : 1,
"field_id" : 0
}
/* 1 */
{
"_id" : 2,
"test_field" : 1
}
/* 2 */
{
"_id" : 3,
"field_id" : null
}
此 PHP 示例演示了如何使用 javascript 代码搜索集合以使用上述相同概念减少结果集:
<?php
/**
* @var MongoDB
*/
$db = $this->getMongoDbHandler();
/**
* @var MongoCollection
*/
$coll = $db->selectCollection('myColl');
/**
* @var JavaScript code
*/
$js = "function() { return (this.field_id || 0) == 0; }" ;
/**
* @var MongoCursor
*/
$cursor = $coll->find(array('$where' => $js));
foreach ($cursor as $doc) {
var_dump($doc);
}
?>