導航:首頁 > 編程語言 > mongodbgroupphp

mongodbgroupphp

發布時間:2022-10-22 15:51:54

① 如何為php安裝mongodb的擴展

1.首先下載php的mongodb擴展
從http://pecl.php.net/package/mongo這個網址下載mongodb的擴展源碼

1

wget http://pecl.php.net/get/mongo-1.4.5.tgz

2.解壓安裝包

1

tar zxf mongo-1.4.5.tgz

3.進入解壓目錄,運行phpize進行安裝准備

1
2

cd mongo-1.4.5
/usr/local/php/bin/phpize

4.安裝編譯
上述命令運行完後,在目錄下就生成了configure文件
使用./configure命令進行安裝配置,然後使用make && make install進行編譯安裝,命令如下:

1
2

./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

5.編輯php.ini增加下述一行添加mongodb擴展

1

extension=mongo.so

重啟web容器,然後查看phpinfo,看到mongodb的內容就說明安裝成功。

② mongodb已經安裝成功,php擴展安裝成功 但是用php 連接失敗 錯誤提示如下

$class='MongoClient';

if(!class_exists($class)){

$class='Mongo';

}

$conn=new$class($hosts,$args);

③ mongodb 3.2怎麼在php中連接

表標PHP已經自帶了mongo功能,你就可以操作下面的代碼(但是你必須有安裝mongodb伺服器)
一、連接資料庫

使用下面的代碼創建一個資料庫鏈接

復制代碼 代碼如下:
<?php
$connection = new Mongo(mongodb://192.168.1.5:27017); //鏈接到 192.168.1.5:27017//27017埠是默認的。
$connection = new Mongo( "example.com" ); //鏈接到遠程主機(默認埠)
$connection = new Mongo( "example.com:65432" ); //鏈接到遠程主機的自定義的埠
print_r($connection->listDBs());//能列印出資料庫數組,看看有幾個資料庫。

?>
如圖:

上圖說有一個資料庫名字叫local,總大小1個位元組,他是空的。看見ok表示運行成功。

現在你可以使用$connection鏈接來操作資料庫了

選擇資料庫

使用下面的代碼來選擇一個資料庫

復制代碼 代碼如下:
<?php
$db = $connection->dbname;
?>

這里的資料庫並不一定是一個已經存在的資料庫,如果所選擇的資料庫不存在,則會新建一個資料庫,所以在選擇資料庫的時候,注意一定要填上正確的資料庫名
如果拼寫錯誤的話,很有可能會新建一個資料庫

復制代碼 代碼如下:
<?php
$db = $connection->mybiglongdbname;
//做一些事情
$db = $connection->mybiglongdbnme;
//現在會連上一個新的資料庫
?>

獲取一個集合

獲取一個集合跟選擇資料庫擁有相同的語法格式

復制代碼 代碼如下:
<?php
$db = $connection->baz;//選擇資料庫
$collection = $db->foobar;//選擇foobar集合
//或者使用更簡潔的方式
$collection = $connection->baz->foobar;
?>

插入一個文檔

多維數組是可以被儲存到資料庫中的基本單元
一個隨機的文檔可能是這樣

復制代碼 代碼如下:
<?php
$doc = array(
」name」 => 「MongoDB」,
「type」 => 「database」,
「count」 => 1,
「info」 => (object)array( 「x」 => 203,
「y」 => 102),
「versions」 => array(「0.9.7″, 「0.9.8″, 「0.9.9″)
);
?>

注意:你可以嵌套數組與對象,對象與文檔在mongodb中幾乎是一樣的,你可以使用$doc調用一個文檔或對象,但是info欄位總是一個對象而不是一個文檔,
本約束適用於所有文檔
使用MongoCollection::insert()插入一個文檔

復制代碼 代碼如下:
<?php
$m = new Mongo();
$collection = $m->foo->bar;
$collection->insert($doc);
?>

mongodb 的 insert()、save() ,區別主要是:若存在主鍵,insert() 不做操作,而save() 則更改原來的內容為新內容。
存在數據: { _id : 1, " name " : " n1 " }
insert({ _id : 1, " name " : " n2 " }) 會提示錯誤
save({ _id : 1, " name " : " n2 " }) 會把 n1 改為 n2 。

使用MongoCollection::findOne()查詢文檔

為了證明上面那段代碼的數據已經插入到資料庫里了,我們進行簡單的 findOne()操作以得到集合中的第一個文檔數據,這種方法只返回一個文檔數據,
這種方法適用於在你的查詢語句的時候只匹配一個文檔或者你只關心第一條數據

復制代碼 代碼如下:
<?php
$obj = $collection->findOne();
var_mp( $obj );
?>

你會看到下列結果

復制代碼 代碼如下:
array(5) {
["_id"]=>
object(MongoId)#6 (0) {
}
["name"]
string(7) 「MongoDB」
["type"]=>
string(8) 「database」
["count"]=>
int(1)
["info"]=>
array (2) {
["x"]=>
int(203)
["y"]=>
int(102)
}
["versions"]
array(3) {
[0]=>
string(5) 「0.9.7″
[1]=>
string(5) 「0.9.8″
[2]=>
string(5) 「0.9.9″
}
}

注意_id欄位自動載入了文檔上,MongoDB儲存元素中以_以及$開頭的都是供內部使用的
添加更多文檔

為了做一些更有趣的事情,我們添加更多簡單的文檔到集合中,這些文檔如下

復制代碼 代碼如下:
<?php
array( 「i」 => value );
?>

我們可以使用循環相當有效的插入數據

復制代碼 代碼如下:
<?php
for($i=0; $i<100; $i++) {
$collection->insert( array( 「i」 => $i ) );
}
?>

注意:我們可以插入不同的欄位在同一字元集中,在這方面意味著MongoDB擁有非常自由的儲存模式

在一個集合中計算文檔的數量

現在我們插入了101個文檔(我們用循環插入了100個,之前還插入了一個),我們可以使用count()來看看我們的數據是不是都被插入進去了

復制代碼 代碼如下:

<?php
echo $collection->count();
?>

這段代碼將列印出101
MongoCollection::count() 也可以查詢欄位數據

使用游標得到集合中的所有文檔

為了得到集合中的所有文檔,我們可以使用 MongoCollection::find()方法,find()方法返回一個 MongoCursor對象,可以讓我們重復得到查詢所匹配的的文檔

復制代碼 代碼如下:
<?php
$cursor = $collection->find();
foreach ($cursor as $id => $value) {
echo 「$id: 「;
var_mp( $value );
}
?>

這樣我們會列印出集合中的這101個文檔,$id就是文檔中的_id欄位,$value 就是文檔本身
為查詢規定一個標准
我們可以通過find()方法得到集合中的文檔子集,例如,我們要查詢出集合中i欄位為71的文檔,我們可以使用下列方法

復制代碼 代碼如下:
<?php
$query = array( 「i」 => 71 );
$cursor = $collection->find( $query );
while( $cursor->hasNext() ) {
var_mp( $cursor->getNext() );
}
?>

我們將列印如下數據

復制代碼 代碼如下:
array(2) {
["_id"]=>
object(MongoId)#6 (0) {
}
["i"]=>
int(71)
["_ns"]=>
「testCollection」
}

為查詢設定一個范圍

我們可以通過find()創建一個查詢語句以得集合中的一個子集,例如如果我們得到所有」i」>50的文檔,我們可以使用如下代碼

復制代碼 代碼如下:
<?php
$query = array( 「i」 => array(『$gt' =>50)); //注意'$gt'兩邊的單引號
$cursor = $coll->find( $query );
while( $cursor->hasNext() ) {
var_mp( $cursor->getNext() );
}
?>

我們同樣可以得到20 < i <= 30之間的數據

復制代碼 代碼如下:
<?php
$query = array( 「i」 => array( 「\$gt」 => 20, 「\$lte」 => 30 ) );
$cursor = $coll->find( $query );
while( $cursor->hasNext() ) {
var_mp( $cursor->getNext() );
}
?>

我們非常容易漏掉$美元符號,你也可以選擇你自定義的符號來代替美元符號,選擇一個不會在你的建裡面出現的符號例如」:」,在php.ini中加上這么一句話

復制代碼 代碼如下:
mongo.cmd = 「:」

那麼上面的代碼就可以替換成

復制代碼 代碼如下:
<?php
$query = array( 「i」 => array( 「:gt」 => 20, 「:lte」 => 30 ) );
?>

當然你也可以使用ini_set(「mongo.cmd」, 「:」)的方法來改變
創建一個索引

MongoDB支持索引,並且可以很容易的加到一個集合中,你只要指定某個欄位為索引就行了,並且還可以指定 正序索引(1)與 倒序索引(-1)
下面的代碼為I創建了索引

復制代碼 代碼如下:
<?php
$coll->ensureIndex( array( 「i」 => 1 ) ); //在」i」上創建了一個索引
$coll->ensureIndex( array( 「i」 => -1, 「j」 => 1 ) );//在」i」上創建了倒序索引 在」j」上創建了正序索引
?>

一個完整的簡單例子

這個例子展示了如何鏈接mongodb資料庫,如何選擇資料庫,如何插入數據,如何查詢數據,以及關閉資料庫鏈接

復制代碼 代碼如下:
<?php
//鏈接
$m = new Mongo();
// 選擇一個資料庫
$db = $m->comedy;
$collection = $db->cartoons;

//添加一個元素
$obj = array( "title" => "Calvin and Hobbes", "author" => "Bill Watterson" );
$collection->insert($obj);

//修改
$newdata = array('$set' => array("title" => "Calvin and Hobbes"));
$collection->update(array("author" => "caleng"), $newdata);
//刪除
$collection->remove(array('author'=>'caleng'), array("justOne" => true));

//添加另一個元素,使用不同的格式
$obj = array( "title" => "XKCD", "online" => true );
$collection->insert($obj);

//查詢所有的集合
$cursor = $collection->find();

//重復顯示結果
foreach ($cursor as $obj) {
echo $obj["title"] . "\n";
}

// 關閉鏈接
$m->close();
?>

輸出結果為

復制代碼 代碼如下:
Calvin and Hobbes
XKCD

④ mongodb group怎麼加條件

這本書上的MongoDB版本是1.6.0,我自己的機器是Ubuntu 12.04 x64,MongoDB版本是2.0.4。
下面是書上的測試數據:

[javascript] view plain
db.stocks.insert({"day": "2010/10/03", "time": "2010/10/03 03:47:01 GMT-400", "price": 4.23});
db.stocks.insert({"day": "2010/10/04", "time": "2010/10/04 11:28:39 GMT-400", "price": 4.27});
db.stocks.insert({"day": "2010/10/03", "time": "2010/10/03 05:00:23 GMT-400", "price": 4.10});
db.stocks.insert({"day": "2010/10/06", "time": "2010/10/06 05:27:58 GMT-400", "price": 4.30});
db.stocks.insert({"day": "2010/10/04", "time": "2010/10/04 08:34:50 GMT-400", "price": 4.01});

書上關於group用法的程序代碼:

[javascript] view plain
db.runCommand({"group": {
"ns": "stocks",
"key": "day",
"initial": {"time": 0},
"$rece": function(doc, prev) {
if (doc.time > prev.time) {

⑤ thinkphp3.2 mongo 怎麼用group

MongoModel中有部分連貫操作暫時不支持,包括:group、union、join、having、lock和distinct操作。其他連貫操作都可以很好的支持,例如:
$Model = new Think\Model\MongoModel("User");
$Model->field("name,email,age")->order("status desc")->limit("10,8")->select();
如果還是不對或不明白的話可以去後盾人線下面授培訓去問問專家教師,他們一定會的,這樣不就行了グッ!(๑•̀ㅂ•́)و✧

⑥ 我用mongodb group查詢,查詢之後只有一個分組欄位和count欄位,怎麼顯示更多欄位

mongo的rece就是這個樣子的就只有_id和value倆欄位吧。我一般是這樣處理的,請看圖

當然我是PHPer,但理是相通的,自己琢磨去吧

⑦ PHP中怎麼查詢mongodb中多維數組里的子數組

比如查詢數組:arr[arr2["a","b"],arr3["c","d"]]
一般思路:db.tableName.find("arr[0][1]","b");//查詢arr數組第一個元素數組的第二個元素是不是等於"b"
具體你可以貼出你要查詢的數據,這一步查詢出結果後,就可以寫成PHP的方法去查詢了。

⑧ 為什麼我用php查詢mongodb資料庫中的某個集合中的文檔的條數,得到的結果和實際情況不一致

我也遇到過:

官方文檔解釋了這種現象的原因以及解決方法:
不準確的原因:

⑨ mongodb 請問php中的這句mysql語法,在mongodb中如何寫。

查詢:
MySQL:
SELECT * FROM user
Mongo:
db.user.find()
MySQL:
SELECT * FROM user WHERE name = 'starlee'
Mongo:
db.user.find({『name' : 'starlee'})
插入:
MySQL:
INSERT INOT user (`name`, `age`) values ('starlee',25)
Mongo:
db.user.insert({『name' : 'starlee', 『age' : 25})
如果你想在MySQL里添加一個欄位,你必須:
ALTER TABLE user….
但在MongoDB里你只需要:
db.user.insert({『name' : 'starlee', 『age' : 25, 『email' : '[email protected]'})
刪除:
MySQL:
DELETE * FROM user
Mongo:
db.user.remove({})
MySQL:
DELETE FROM user WHERE age < 30
Mongo:
db.user.remove({『age' : {$lt : 30}})
$gt : > ; $gte : >= ; $lt : < ; $lte : <= ; $ne : !=
更新:
MySQL:
UPDATE user SET `age` = 36 WHERE `name` = 'starlee'
Mongo:
db.user.update({『name' : 'starlee'}, {$set : {『age' : 36}})
MySQL:
UPDATE user SET `age` = `age` + 3 WHERE `name` = 'starlee'
Mongo:
db.user.update({『name' : 'starlee'}, {$inc : {『age' : 3}})
MySQL:
SELECT COUNT(*) FROM user WHERE `name` = 'starlee'
Mongo:
db.user.find({『name' : 'starlee'}).count()
MySQL:
SELECT * FROM user limit 10,20
Mongo:
db.user.find().skip(10).limit(20)
MySQL:
SELECT * FROM user WHERE `age` IN (25, 35,45)
Mongo:
db.user.find({『age' : {$in : [25, 35, 45]}})
MySQL:
SELECT * FROM user ORDER BY age DESC
Mongo:
db.user.find().sort({『age' : -1})
MySQL:
SELECT DISTINCT(name) FROM user WHERE age > 20
Mongo:
db.user.distinct(『name', {『age': {$lt : 20}})
MySQL:
SELECT name, sum(marks) FROM user GROUP BY name
Mongo:
db.user.group({
key : {『name' : true},
cond: {『name' : 『foo'},
rece: function(obj,prev) { prev.msum += obj.marks; },
initial: {msum : 0}
});
MySQL:
SELECT name FROM user WHERE age < 20
Mongo:
db.user.find(『this.age < 20′, {name : 1})
發現很多人在搜MongoDB循環插入數據,下面把MongoDB循環插入數據的方法添加在下面:
for(var i=0;i<100;i++)db.test.insert({uid:i,uname:'nosqlfan'+i});
上面一次性插入一百條數據,大概結構如下:
{ 「_id」 : ObjectId(「4c876e519e86023a30dde6b8″), 「uid」 : 55, 「uname」 : 「nosqlfan55″ }
{ 「_id」 : ObjectId(「4c876e519e86023a30dde6b9″), 「uid」 : 56, 「uname」 : 「nosqlfan56″ }
{ 「_id」 : ObjectId(「4c876e519e86023a30dde6ba」), 「uid」 : 57, 「uname」 : 「nosqlfan57″ }
{ 「_id」 : ObjectId(「4c876e519e86023a30dde6bb」), 「uid」 : 58, 「uname」 : 「nosqlfan58″ }
{ 「_id」 : ObjectId(「4c876e519e86023a30dde6bc」), 「uid」 : 59, 「uname」 : 「nosqlfan59″ }
{ 「_id」 : ObjectId(「4c876e519e86023a30dde6bd」), 「uid」 : 60, 「uname」 : 「nosqlfan60″ }
簡易對照表
SQL Statement Mongo Query Language Statement
CREATE TABLE USERS (a Number, b Number) implicit; can be done explicitly
INSERT INTO USERS VALUES(1,1) db.users.insert({a:1,b:1})
SELECT a,b FROM users db.users.find({}, {a:1,b:1})
SELECT * FROM users db.users.find()
SELECT * FROM users WHERE age=33 db.users.find({age:33})
SELECT a,b FROM users WHERE age=33 db.users.find({age:33}, {a:1,b:1})
SELECT * FROM users WHERE age=33 ORDER BY name db.users.find({age:33}).sort({name:1})
SELECT * FROM users WHERE age>33 db.users.find({'age':{$gt:33}})})
SELECT * FROM users WHERE age<33 db.users.find({'age':{$lt:33}})})
SELECT * FROM users WHERE name LIKE "%Joe%" db.users.find({name:/Joe/})
SELECT * FROM users WHERE name LIKE "Joe%" db.users.find({name:/^Joe/})
SELECT * FROM users WHERE age>33 AND age<=40 db.users.find({'age':{$gt:33,$lte:40}})})
SELECT * FROM users ORDER BY name DESC db.users.find().sort({name:-1})
CREATE INDEX myindexname ON users(name) db.users.ensureIndex({name:1})
CREATE INDEX myindexname ON users(name,ts DESC) db.users.ensureIndex({name:1,ts:-1})
SELECT * FROM users WHERE a=1 and b='q' db.users.find({a:1,b:'q'})
SELECT * FROM users LIMIT 10 SKIP 20 db.users.find().limit(10).skip(20)
SELECT * FROM users WHERE a=1 or b=2 db.users.find( { $or : [ { a : 1 } , { b : 2 } ] } )
SELECT * FROM users LIMIT 1 db.users.findOne()
EXPLAIN SELECT * FROM users WHERE z=3 db.users.find({z:3}).explain()
SELECT DISTINCT last_name FROM users db.users.distinct('last_name')
SELECT COUNT(*y) FROM users db.users.count()
SELECT COUNT(*y) FROM users where AGE > 30 db.users.find({age: {'$gt': 30}}).count()
SELECT COUNT(AGE) from users db.users.find({age: {'$exists': true}}).count()
UPDATE users SET a=1 WHERE b='q' db.users.update({b:'q'}, {$set:{a:1}}, false, true)
UPDATE users SET a=a+2 WHERE b='q' db.users.update({b:'q'}, {$inc:{a:2}}, false, true)
DELETE FROM users WHERE z="abc" db.users.remove({z:'abc'});
###################################################
一、操作符
操作符相信大家肯定都知道了,就是等於、大於、小於、不等於、大於等於、小於等於,但是在mongodb里不能直接使用這些操作符。在mongodb里的操作符是這樣表示的:
(1) $gt > (大於)
(2) $lt< (小於)
(3) $gte>= (大於等於)
(4) $lt<= (小於等於)
(5) $ne!= (不等於)
(6) $inin (包含)
(7) $ninnot in (不包含)
(8) $existsexist (欄位是否存在)
(9) $inc對一個數字欄位field增加value
(10) $set就是相當於sql的set field = value
(11) $unset就是刪除欄位
(12) $push把value追加到field裡面去,field一定要是數組類型才行,如果field不存在,會新增一個數組類型加進去
(13) $pushAll同$push,只是一次可以追加多個值到一個數組欄位內
(14) $addToSet增加一個值到數組內,而且只有當這個值不在數組內才增加。
(15) $pop刪除最後一個值:{ $pop : { field : 1 } }刪除第一個值:{ $pop : { field : -1 } }注意,只能刪除一個值,也就是說只能用1或-1,而不能用2或-2來刪除兩條。mongodb 1.1及以後的版本才可以用
(16) $pull從數組field內刪除一個等於value值
(17) $pullAll同$pull,可以一次刪除數組內的多個值
(18) $ 操作符是他自己的意思,代表按條件找出的數組裡面某項他自己。這個比較坳口,就不說了。
二、CURD 增、改、讀、刪
增加

復制代碼代碼如下:

db.collection->insert({'name' => 'caleng', 'email' => 'admin#admin.com'});

是不是灰常簡單呀,對就是這么簡單,它沒有欄位的限制,你可以隨意起名,並插入數據

復制代碼代碼如下:

db.collection.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } ); 只更新了第一條大於1記錄
db.collection.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true ); 大於3的記錄 全更新了
db.collection.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false ); 大於4的記錄 只加進去了第一條
db.collection.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true ); 大於5的記錄 全加進去

查詢

復制代碼代碼如下:

db.collection.find(array('name' => 'ling'), array('email'=>'[email protected]'))
db.collection.findOne(array('name' => 'ling'), array('email''[email protected]'))

大家可以看到查詢我用了兩種不同的寫法,這是為什麼,其實這跟做菜是一樣的,放不同的調料,炒出的菜是不同的味道。下面給大家說一下,這兩種調料的不同作用。
findOne()只返回一個文檔對象,find()返回一個集合列表。
也就是說比如,我們只想查某一條特定數據的詳細信息的話,我們就可以用findOne();
如果想查詢某一組信息,比如說一個新聞列表的時候,我們就可以作用find();
那麼我想大家這時一定會想到我想對這一個列表排序呢,no problem mongodb會為您全心全意服務

復制代碼代碼如下:

db.collection.find().sort({age:1}); //按照age正序排列
db.collection.find().sort({age:-1}); //按照age倒序排列
db.collection.count(); //得到數據總數
db.collection.limit(1); //取數據的開始位置
db.collection.skip(10); //取數據的結束位置
//這樣我們就實現了一個取10條數據,並排序的操作。

刪除
刪除有兩個操作 remove()和drop()

復制代碼代碼如下:

db.collection.remove({"name",'jerry'}) //刪除特定數據
db.collection.drop() //刪除集合內的所有數據

distinct操作

復制代碼代碼如下:

db.user.distinct('name', {'age': {$lt : 20}})

2. 熟悉MongoDB的數據操作語句,類sql
資料庫操作語法
mongo --path
db.AddUser(username,password) 添加用戶
db.auth(usrename,password) 設置資料庫連接驗證
db.cloneDataBase(fromhost) 從目標伺服器克隆一個資料庫
db.commandHelp(name) returns the help for the command
db.Database(fromdb,todb,fromhost) 復制資料庫fromdb---源資料庫名稱,todb---目標資料庫名稱,fromhost---源資料庫伺服器地址
db.createCollection(name,{size:3333,capped:333,max:88888}) 創建一個數據集,相當於一個表
db.currentOp() 取消當前庫的當前操作
db.dropDataBase() 刪除當前資料庫
db.eval(func,args) run code server-side
db.getCollection(cname) 取得一個數據集合,同用法:db['cname'] or db.cname
db.getCollenctionNames() 取得所有數據集合的名稱列表
db.getLastError() 返回最後一個錯誤的提示消息
db.getLastErrorObj() 返回最後一個錯誤的對象
db.getMongo() 取得當前伺服器的連接對象get the server connection object
db.getMondo().setSlaveOk() allow this connection to read from then nonmaster membr of a replica pair
db.getName() 返回當操作資料庫的名稱
db.getPrevError() 返回上一個錯誤對象
db.getProfilingLevel() ?什麼等級
db.getReplicationInfo() ?什麼信息
db.getSisterDB(name) get the db at the same server as this onew
db.killOp() 停止(殺死)在當前庫的當前操作
db.printCollectionStats() 返回當前庫的數據集狀態
db.printReplicationInfo()
db.printSlaveReplicationInfo()
db.printShardingStatus() 返回當前資料庫是否為共享資料庫
db.removeUser(username) 刪除用戶
db.repairDatabase() 修復當前資料庫
db.resetError()
db.runCommand(cmdObj) run a database command. if cmdObj is a string, turns it into {cmdObj:1}
db.setProfilingLevel(level) 0=off,1=slow,2=all
db.shutdownServer() 關閉當前服務程序
db.version() 返回當前程序的版本信息
數據集(表)操作語法
db.linlin.find({id:10}) 返回linlin數據集ID=10的數據集
db.linlin.find({id:10}).count() 返回linlin數據集ID=10的數據總數
db.linlin.find({id:10}).limit(2) 返回linlin數據集ID=10的數據集從第二條開始的數據集
db.linlin.find({id:10}).skip(8) 返回linlin數據集ID=10的數據集從0到第八條的數據集
db.linlin.find({id:10}).limit(2).skip(8) 返回linlin數據集ID=1=的數據集從第二條到第八條的數據
db.linlin.find({id:10}).sort() 返回linlin數據集ID=10的排序數據集
db.linlin.findOne([query]) 返回符合條件的一條數據
db.linlin.getDB() 返回此數據集所屬的資料庫名稱
db.linlin.getIndexes() 返回些數據集的索引信息
db.linlin.group({key:...,initial:...,rece:...[,cond:...]})
db.linlin.mapRece(mayFunction,receFunction,<optional params>)
db.linlin.remove(query) 在數據集中刪除一條數據
db.linlin.renameCollection(newName) 重命名些數據集名稱
db.linlin.save(obj) 往數據集中插入一條數據
db.linlin.stats() 返回此數據集的狀態
db.linlin.storageSize() 返回此數據集的存儲大小
db.linlin.totalIndexSize() 返回此數據集的索引文件大小
db.linlin.totalSize() 返回些數據集的總大小
db.linlin.update(query,object[,upsert_bool]) 在此數據集中更新一條數據
db.linlin.validate() 驗證此數據集
db.linlin.getShardVersion() 返回數據集共享版本號

⑩ 如何提升mongodb中group的效率

mongodb的 group 操作對索引的運用是比較差的。
那麼針對你這個業務場景,我的建議是,用$group之前的操作,加上一個以id為依據的排序,然後用返回的索引,自己維護一個map/array,在比對 cursor.next()中獲取到的id之後,增加map/arraidy中對應的sum值。以你的情況來看的話,需要維護的內存是非常小的。

閱讀全文

與mongodbgroupphp相關的資料

熱點內容
皓強工具解壓步驟 瀏覽:690
部隊抗洪搶險命令範文 瀏覽:888
歐姆龍plc編程軟體使用教程 瀏覽:594
ai文件pdf 瀏覽:911
騰訊雲伺服器掛載混合雲 瀏覽:758
智能小車用什麼單片機 瀏覽:463
java怎麼給窗口關閉 瀏覽:940
列舉51單片機的定址方式 瀏覽:706
剪輯app怎麼寫長篇文字 瀏覽:400
app專屬流量過月租怎麼不更新 瀏覽:654
王者程序員都有誰 瀏覽:76
給牛換腳掌解壓 瀏覽:387
圍棋有多少種演算法 瀏覽:602
unity資源包在哪個文件夾 瀏覽:704
阿里雲伺服器遠程鏈接不成功 瀏覽:482
文件系統pdf 瀏覽:767
原神安卓區服什麼意思 瀏覽:38
貝殼app怎麼線上發布 瀏覽:161
如何挑選安卓系統機頂盒 瀏覽:55
安卓快充使用有什麼注意事項 瀏覽:911