紧接着上篇来,这篇主要讲,mongodb的group功能,做的还是挺强大的,相当对于find(),skip(),distinct()等,用法比较复杂。 测试数据 db.fruit.find();{ "_id" : 1, "category" : "fruit", "name" : "apple" }{ "_id" : 2, "category" : "fruit", "name" :
紧接着上篇来,这篇主要讲,mongodb的group功能,做的还是挺强大的,相当对于find(),skip(),distinct()等,用法比较复杂。
测试数据
> db.fruit.find(); { "_id" : 1, "category" : "fruit", "name" : "apple" } { "_id" : 2, "category" : "fruit", "name" : "peach" } { "_id" : 3, "category" : "fruit", "name" : "banana" } { "_id" : 4, "category" : "veggie", "name" : "corn" } { "_id" : 5, "category" : "veggie", "name" : "broccoli" }
1,根据category分组
> db.fruit.group( ?????? { ???????? key: { category: 1}, ???????? reduce: function(obj, prev) { ???????????????????? prev.items.push(obj.name); ???????????????? }, ???????? initial: { items : [] } ?????? } ??? ); [ ??????? { ??????????????? "category" : "fruit", ??????????????? "items" : [ ??????????????????????? "apple", ??????????????????????? "peach", ??????????????????????? "banana" ??????????????? ] ??????? }, ??????? { ??????????????? "category" : "veggie", ??????????????? "items" : [ ??????????????????????? "corn", ??????????????????????? "broccoli" ??????????????? ] ??????? } ]
php代码如下
$keys = array("category" => 1); $initial = array("items" => array()); $reduce = "function (obj, prev) { prev.items.push(obj.name); }"; $g = $collection->group($keys, $initial, $reduce); print_r($g);?? //结果如下。 Array ( ??? [retval] => Array ??????? ( ??????????? [0] => Array ??????????????? ( ??????????????????? [category] => fruit ??????????????????? [items] => Array ??????????????????????? ( ??????????????????????????? [0] => apple ??????????????????????????? [1] => peach ??????????????????????????? [2] => banana ??????????????????????? ) ??????????????? ) ??????????? [1] => Array ??????????????? ( ??????????????????? [category] => veggie ??????????????????? [items] => Array ??????????????????????? ( ??????????????????????????? [0] => corn ??????????????????????????? [1] => broccoli ??????????????????????? ) ??????????????? ) ??????? ) ??? [count] => 5 ??? [keys] => 2 ??? [ok] => 1 )
2,根据category来分组,并统计count
> db.fruit.group( ?????????? { ???????????? key: { category: 1}, ???????????? cond: { _id: { $gt: 2 } }, ???????????? reduce: function(obj, prev) { ??????????????? prev.items.push(obj.name); ?? ??? ??? ??? ?prev.count++; ???????????? }, ???????????? initial: { items : [] ,count:0} ?????????? } ??????? ); [ ?? ?{ ?? ??? ?"category" : "fruit", ?? ??? ?"items" : [ ?? ??? ??? ?"banana" ?? ??? ?], ?? ??? ?"count" : 1 ?? ?}, ?? ?{ ?? ??? ?"category" : "veggie", ?? ??? ?"items" : [ ?? ??? ??? ?"corn", ?? ??? ??? ?"broccoli" ?? ??? ?], ?? ??? ?"count" : 2 ?? ?} ]
php代码如下:
$keys = array("category" => 1); $initial = array("items" => array(),'count'=>0); $reduce = "function (obj, prev) { " . ?? ??? ??? ?? "prev.items.push(obj.name); " . ?? ??? ??? ?? "prev.count++;" . ?? ??? ?? "}"; $condition = array('condition' => array("_id" => array( '$gt' => 2))); $g = $collection->group($keys, $initial, $reduce, $condition); print_r($g);?? //结果如下。 Array ( ??? [retval] => Array ??????? ( ??????????? [0] => Array ??????????????? ( ??????????????????? [category] => fruit ??????????????????? [items] => Array ??????????????????????? ( ??????????????????????????? [0] => banana ??????????????????????? ) ??????????????????? [count] => 1 ??????????????? ) ??????????? [1] => Array ??????????????? ( ??????????????????? [category] => veggie ??????????????????? [items] => Array ??????????????????????? ( ??????????????????????????? [0] => corn ??????????????????????????? [1] => broccoli ??????????????????????? ) ??????????????????? [count] => 2 ??????????????? ) ??????? ) ??? [count] => 3 ??? [keys] => 2 ??? [ok] => 1 )
3,利用aggregate group功能,也挺强大
> db.fruit.aggregate([ ???????????????????? { $match: { _id: {$gt:0} } }, ???????????????????? { $group: { _id: "$category", count: { $sum: 1 } } }, ???????????????????? { $sort: { count: -1 } } ?????????????????? ]); { "_id" : "fruit", "count" : 3 } { "_id" : "veggie", "count" : 2 }
php代码如下:
$cond = array( ??? array( ??????? '$match' => array('_id' => array('$gt' => 0)), ??? ), ??? array( ??????? '$group' => array( ??????????? '_id' => '$category', ?????????? 'count' => array('$sum' => 1), ??????? ), ??? ), ??? array( ??????? '$sort' => array("count" => -1), ??? ), ); $result = $collection->aggregate($cond); print_r($result); //结果如下: Array ( ??? [result] => Array ??????? ( ??????????? [0] => Array ??????????????? ( ??????????????????? [_id] => fruit ??????????????????? [count] => 3 ??????????????? ) ??????????? [1] => Array ??????????????? ( ??????????????????? [_id] => veggie ??????????????????? [count] => 2 ??????????????? ) ??????? ) ??? [ok] => 1 )
mongodb 的select 操作有很多,在这里,只是说了一些常用的功能。
原文地址:mongodb group php 操作, 感谢原作者分享。

mongodb php扩展没有的解决办法:1、在linux中执行“$ sudo pecl install mongo”命令来安装MongoDB的PHP扩展驱动;2、在window中,下载php mongodb驱动二进制包,然后在“php.ini”文件中配置“extension=php_mongo.dll”即可。

Redis和MongoDB都是流行的开源NoSQL数据库,但它们的设计理念和使用场景有所不同。本文将重点介绍Redis和MongoDB的区别和使用场景。Redis和MongoDB简介Redis是一个高性能的数据存储系统,常被用作缓存和消息中间件。Redis以内存为主要存储介质,但它也支持将数据持久化到磁盘上。Redis是一款键值数据库,它支持多种数据结构(例

MongoDB是一种高性能、开源、文档型的NoSQL数据库,被广泛应用于Web应用、大数据以及云计算领域。而Go语言则是一种快速、开发效率高、代码可维护性强的编程语言。本文将为您完整介绍如何在Go语言中使用MongoDB。一、安装MongoDB在使用MongoDB之前,需要先在您的系统中安装MongoDB。在Linux系统下,可以通过如下命令安装:sudo

php7.0安装mongo扩展的方法:1、创建mongodb用户组和用户;2、下载mongodb源码包,并将源码包放到“/usr/local/src/”目录下;3、进入“src/”目录;4、解压源码包;5、创建mongodb文件目录;6、将文件复制到“mongodb/”目录;7、创建mongodb配置文件并修改配置即可。

MongoDB作为一款流行的NoSQL数据库,已经被广泛应用于各种大型Web应用和企业级应用中。而PHP语言也作为一种流行的Web编程语言,与MongoDB的结合也变得越来越重要。在本文中,我们将会学习如何使用PHP语言操作MongoDB数据库进行增删查改的操作。

自定义Appender非常简单,继承一下AppenderBase类即可。可以看到有个AppenderBase,有个UnsynchronizedAppenderBase,还有个AsyncAppenderBase继承了UnsynchronizedAppenderBase。从名字就能看出来区别,异步的、普通的、不加锁的。我们定义一个MongoDBAppender继承UnsynchronizedAppenderBasepublicclassMongoDBAppenderextendsUnsynchron

在现代企业应用程序开发中,需要处理海量数据和高并发的访问请求。为了满足这些需求,开发人员需要使用高性能的数据库系统,以确保系统的稳定性和可扩展性。本文将介绍如何使用Swoole和MongoDB构建高性能的文档数据库系统。Swoole是一个基于PHP语言开发的异步网络通信框架,它能够大大提高PHP应用程序的性能和并发能力。MongoDB是一种流行的文档数据库,

Python服务器编程:MongoDB数据库使用攻略MongoDB是一种NoSQL数据库,相比传统的关系型数据库,在某些场景下具有明显的优势。本文将介绍如何在Python服务器端使用MongoDB数据库,包括安装、连接、基本操作和查询优化等方面。一、安装MongoDB数据库MongoDB官网提供了各种操作系统下的安装包,这里我们选择在Ubuntu上安装。打开


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

뜨거운 주제



