使用Lili从MongoDB获取不同的记录
我想从收集的“页面”中找到不同的记录 我试过:使用Lili从MongoDB获取不同的记录,mongodb,find,distinct,lithium,Mongodb,Find,Distinct,Lithium,我想从收集的“页面”中找到不同的记录 我试过: $Volume_numbers = Pages::find(array('fields'=>'DISTINCT volume_number')); 我还尝试: $params = array('conditions'=>array( 'distinct' => 'pages', 'key' => 'volume_number', )); $pageV
$Volume_numbers = Pages::find(array('fields'=>'DISTINCT volume_number'));
我还尝试:
$params = array('conditions'=>array(
'distinct' => 'pages',
'key' => 'volume_number',
));
$pageVolumes = Pages::all($params);
正如MongoDB文档和其中一个答案中所建议的那样
当我尝试通过Mongo执行此操作时,我得到了正确的结果
> db.runCommand({distinct:'pages',key:'volume_number'})
{
"values" : [
22,
38
],
"stats" : {
"n" : 1084,
"nscanned" : 1084,
"nscannedObjects" : 1084,
"timems" : 25,
"cursor" : "BasicCursor"
},
"ok" : 1
}
我不相信
distinct
命令在lithium\data\source\MongoDb
中有包装器方法;但是,该类确实构成了PHP驱动程序和类,因此您可以执行以下操作:
// Where $mongodb is an instance of lithium\data\source\MongoDb
$result = $mongodb->connection->command(array(
'distinct' => 'pages',
'key' => 'volume_number',
));
或者,我相信Nate Abele会欢迎向Limition发出请求,向
read()
方法添加对distinct
的支持,就像它对组的支持一样(事实上,当前的代码是实现这一点的良好起点).我不相信lithium\data\source\MongoDb
中有用于distinct
命令的包装器方法;但是,该类确实构成了PHP驱动程序和类,因此您可以执行以下操作:
// Where $mongodb is an instance of lithium\data\source\MongoDb
$result = $mongodb->connection->command(array(
'distinct' => 'pages',
'key' => 'volume_number',
));
或者,我相信Nate Abele会欢迎Limition的pull请求,向read()
方法添加对distinct
的支持,就像它对组的支持一样(事实上,当前的代码是实现这一点的良好起点)。这段代码对我来说很有用
$pageVolumes = Pages::connection()->connection->command(array(
'distinct' => 'pages',
'key' => 'volume_number',
));
结果:
Array
(
[values] => Array
(
[0] => 22
[1] => 38
)
[stats] => Array
(
[n] => 1084
[nscanned] => 1084
[nscannedObjects] => 1084
[timems] => 3
[cursor] => BasicCursor
)
[ok] => 1
)
这个代码对我有用
$pageVolumes = Pages::connection()->connection->command(array(
'distinct' => 'pages',
'key' => 'volume_number',
));
结果:
Array
(
[values] => Array
(
[0] => 22
[1] => 38
)
[stats] => Array
(
[n] => 1084
[nscanned] => 1084
[nscannedObjects] => 1084
[timems] => 3
[cursor] => BasicCursor
)
[ok] => 1
)
我添加了:使用Lili\data\source\MongoDb;和$result=$mongodb->connection->command(数组('distinct'=>'pages','key'=>'volume\u number',);遵守守则。。没有结果。如果没有结果,则$mongodb
不是应用程序中用于页面模型的相同数据库资源。根据您上面的评论,它看起来像是Pages::connection()
返回了您需要的参考;和$result=$mongodb->connection->command(数组('distinct'=>'pages','key'=>'volume\u number',);遵守守则。。没有结果。如果没有结果,则$mongodb
不是应用程序中用于页面模型的相同数据库资源。根据您上面的评论,它看起来像是Pages::connection()
返回了您需要的引用。这段代码对我有用<代码>$pageVolumes=Pages::connection()->connection->command(数组('distinct'=>'页面','key'=>'卷号',);
Results:Array([values]=>Array([0]=>22[1]=>38)[stats]=>Array([n]=>1084[nscanned]=>1084[nscannedObjects]=>1084[timems]=>3[cursor]=>BasicCursor)[ok]=>1)
这个代码对我有用<代码>$pageVolumes=Pages::connection()->connection->command(数组('distinct'=>'页面','key'=>'卷号',);
Results:Array([values]=>Array([0]=>22[1]=>38)[stats]=>Array([n]=>1084[nscanned]=>1084[nscannedObjects]=>1084[times]=>3[cursor]=>basiccursors)[ok]=>1]