我正在寻找一种方法来搜索具有以下结构的"answers"文档数组中的关键字(例如"Henrik")
Array
(
[_id] => MongoId Object
(
[$id] => 4eeedd9545c717620a000007
)
[formId] => 6
[respId] => 4eeedd95c93228
[dateCreated] => 2011-10-14 07:45
[answers] => Array
(
[field1] => Henrik
[field6] => myemail@domain.com
[field7] => my city address
)
)
Run Code Online (Sandbox Code Playgroud)
我在这个项目上使用PHP工作,当然这样查询:
$answers = $collection->find( array('formId' => 6, 'answers.field1'=> 'Henrik' ) );
Run Code Online (Sandbox Code Playgroud)
我想要做的是搜索没有答案数组的特定键,像这样
$answers = $collection->find( array('formId' => 6, 'answers'=> 'Henrik' ) );
Run Code Online (Sandbox Code Playgroud)
是否可以进行此类查询?如果这是转贴,我很抱歉.我无法在此处或在Google上找到任何关于此的示例.
mongodb和or combo类似于此,除了我使用php并获取[MongoCursorException] $或数组必须包含对象.
另请阅读http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24or
如何通过PHP在MongoDB中的"OR"内嵌入"AND"? 这是我的条件参数(通过var_export):
'group_id' => '4eec13b5-aeb4-48ee-9619-449125af0e18',
'$or' =>
array (
0 =>
array (
0 =>
array (
'active' => 0,
'user_id' => '4eea7b76-5d34-4036-8344-120c0aaa1bdc',
),
),
1 =>
array (
1 =>
array (
'active' => 1,
),
),
)
Run Code Online (Sandbox Code Playgroud)
需要列组ID并且处于活动状态的帖子列表(属于用户且不活动).
在SQL中非常容易,但无论我通过PHP查询在MongoDB中尝试哪种变化,都会得到$或错误.这可能吗?是$并要求?
当mongod没有运行时,我在尝试连接到mongodb服务器时收到MongoConnectionException.不幸的是,我无法捕获异常.有人能告诉我以下代码有什么问题吗?
try {
$conn = new \Mongo('localhost');
self::$mdb = $conn->filestore;
} catch(MongoConnectionException $e) {
trigger_error('Mongodb not available', E_USER_ERROR);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码因异常而失败
致命错误:未捕获的异常'MongoConnectionException',消息'Invalid argument'
我尝试使用MongoConnectionException和Exception类捕获异常,但两者都不起作用.
我有一个简单的结构化文档,如下所示:
"people" : [
{
"id" : "6241863",
"amount" : 5
}
],
Run Code Online (Sandbox Code Playgroud)
人们可以包含多个元素.我设法让这个工作:
db.village.findOne({"people": {"$in": [{"id": "6241863", "amount": 5}]}})
Run Code Online (Sandbox Code Playgroud)
但我想忽略金额并搜索包含ID为6241863且任何金额的人的任何文件.
我正在使用Windows操作系统(64位)并运行XAMPP(PHP 5.4.7).我尝试安装PHP MongoDB驱动程序,但它没有反映在phpinfo()页面上.
我按照列出的相同步骤操作:
php_mongo-1.3.1-5.4-vc9.dll文件并粘贴C://XAMPP/php/ext/.我的PHP扩展版本说API20100525,TS,VC9;extension=php_mongo-1.3.1-5.4-vc9.dll最后一行.然后我看了一下phpinfo()页面以及我试过的
echo extension_loaded("mongo") ? "loaded\n" : "not loaded\n";
Run Code Online (Sandbox Code Playgroud)
它说它没有加载.
我正在尝试在 Elastic Beanstalk 上部署一个 php 应用程序。除了我打电话给 mongo 驱动程序外,一切都正常。
我尝试安装它遵循以下步骤(不成功):
sudo yum install php-devel (用于 phpize)sudo pecl install mongo按照说明尝试命令:sudo echo "extension=mongo.so" >> /etc/php.ini失败。错误信息是:
-bash: /etc/php.ini: Permission denied
我会以正确的方式解决这个问题吗?
我有一个 MongoDB 文档,其结构类似于以下结构。有大量这些文档,其中有数千人,所以我想通过在 people.#.search_columns.surname 和 people.#.search_columns.givenname 上放置索引来加快速度。如何在 MongoDB 中执行此操作?谢谢你的帮助。
[_id] => MongoId Object (
[$id] => 53b1b1ab72f4f852140dbdc9
)
[name] => People From 1921
[people] => Array (
[0] => Array (
[name] => Barada, Valentine
[search_columns] => Array (
[surname] => Array (
[0] => Mardan,
[1] => Barada
)
[givenname] => Array (
[0] => Valentine
)
)
)
[1] => Array (
[name] => Barsaloux, Nicholas
[search_columns] => Array (
[surname] => Array (
[1] => Barsaloux
) …Run Code Online (Sandbox Code Playgroud) 我写了下面的代码行来获取查找中的一些特定字段,例如
$pipeline = array(
array(
'$match' => $query
),
array(
'$lookup' => array(
'from' => 'studentTbl',
'localField' => '_id',
'foreignField' => 'activity_details.activityId',
'pipeline' => [
['$project' => [ '_id' => 1.0, 'activity_details' => 1.0] ],
],
'as' => 'studentsOfActivities'
)
),
....
....
);
return $this->db->activitiesTbl->aggregate($pipeline)->toArray();
Run Code Online (Sandbox Code Playgroud)
基本上 studentTbl 有许多字段和嵌入的文档。在上面的代码中,我首先使用外部和本地字段通过查找获取,然后确定哪些字段应该投影到管道内。
上面的代码不起作用...请帮忙!!!
mongodb mongodb-php mongodb-query aggregation-framework php-mongodb
文档结构示例是:
{
"dob": "12-13-2001",
"name": "Kam",
"visits": {
"0": {
"service_date": "12-5-2011",
"payment": "40",
"chk_number": "1234455",
},
"1": {
"service_date": "12-15-2011",
"payment": "45",
"chk_number": "3461234",
},
"2": {
"service_date": "12-25-2011",
"payment": "25",
"chk_number": "9821234",
}
}
}
{
"dob": "10-01-1998",
"name": "Sam",
"visits": {
"0": {
"service_date": "12-5-2011",
"payment": "30",
"chk_number": "86786464",
},
"1": {
"service_date": "12-15-2011",
"payment": "35",
"chk_number": "45643461234",
},
"2": {
"service_date": "12-25-2011",
"payment": "20",
"chk_number": "4569821234",
}
}
}
Run Code Online (Sandbox Code Playgroud)
在PHP中,我想列出支付小于"30"的所有"访问"信息(和相应的"名称").
我只想打印"付款"<"30"而非其他人的访问.这样的查询是否可行,或者我是否必须首先使用搜索获取整个文档,然后使用PHP来选择此类访问?
我正在尝试使用php驱动程序计算mongo db集合中给定记录的跳过值。因此,获取给定记录,找出整个集合中该记录的索引。这可能吗?
目前,我正在选择所有记录,并手动对结果数组进行索引。