©
This document uses PHP Chinese website manual Release
(PECL mongo >=0.9.0)
该类的实例用于和数据库进行交互。要获取一个数据库:
Example #1 选择一个数据库
<?php
$m = new MongoClient (); // 连接
$db = $m -> selectDB ( "example" );
?>
个别特殊但有效的数据库名:"null"、"[x,y]"、"3"、"\""、 "/"。
不像集合名,数据库名是可以包含 "$" 的。
$username
, string $password
)$command
[, array $options
= array()
] )$conn
, string $name
)$name
[, array $options
] )$collection
, mixed $document_or_id
)$coll
)$code
[, array $args
= array()
] )$name
)$options
= array()
] )$options
= array()
] )$ref
)$prefix
= "fs"
] )$options
= array()
] )$preserve_cloned_files
= FALSE
[, bool $backup_original_files
= FALSE
]] )$name
)$level
)$read_preference
[, array $tags
] )$ok
= true
] )$w
[, int $wtimeout
] )MongoDB::PROFILING_OFF
0
MongoDB::PROFILING_SLOW
1
MongoDB::PROFILING_ON
2
在返回成功之前,复制修改到此数量的服务器。 MongoCollection 实例的设置从这里继承。 w 仅仅在 MongoDB 服务器版本 1.5.1+ 以及本驱动 1.0.8+ 有效。
w 用于你需要调整确认级别时 ( MongoCollection::insert() 、 MongoCollection::update() 、 MongoCollection::remove() 、 MongoCollection::save() 和 MongoCollection::ensureIndex() 都支持这个选项)。 默认值(1)情况下,只要数据库有操作就会确认。 如果在复制到从服务器前服务器宕机了,它将可能永久丢失本次操作。 所以,你可以为 w 指定一个比一更高的数字, 在返回成功之前确保至少一个从服务器完成了操作。
例如,如果 w 是 2,主服务器和一个从服务必须记录了本次操作, 否则驱动会抛出 MongoCursorException。 它尝试写入总计 w 个从服务器 + 主服务器,但是如果其中一个从服务器宕机了, 操作也会失败,并会抛出异常,所以通常 w=2 是最安全的(主服务器和一个从服务器)。
等待 MongoDB::$w 复制生效的毫秒数。 MongoCollection 实例的设置从这里继承。 w 仅仅在 MongoDB 服务器版本 1.5.1+ 并且驱动版本 1.0.8+ 有效。
除非设置了 wtimeout,服务器会永久等待复制到 w 个服务器。 这个驱动默认会等待 10 秒,你可以修改这个值来改变它的行为。
MongoDB 关于 » databases 的核心文档。
[#1] m dot espositoii at yahoo dot com [2011-08-27 03:11:11]
With Mongo it'll automatically create the collection, so just start using it and it'll do the creation itself.
In other words... just use SelectCollection, if it doesn't exist, it will after that so you can drop it.
[#2] jeromakay at yahoo dot com [2011-01-20 12:19:22]
based on what I've read and then applied, you don't have to specifically create a database or table, you just initialize it.
Indeed, files are not being written inside /data/db, but they will the first moment you start adding data.
So, I'm taking as an example Twitter, with no db defined, I'm still going to have the db available if I run this code:
<?php
define('TWITTER_API_VERSION', 1);
date_default_timezone_set("Europe/Dublin");
try
{
$m = new Mongo(); // connect
$db = $m->selectDB("example");
}
catch ( MongoConnectionException $e )
{
echo '<p>Couldn\'t connect to mongodb, is the "mongo" process running?</p>';
exit();
}
$updates = file_get_contents( "http://api.twitter.com/". TWITTER_API_VERSION ."/statuses/public_timeline.json" );
$updates = json_decode( $updates );
if ( $updates && is_array( $updates ) && count( $updates ) )
{
foreach ( $updates as $update )
{
$db->users->insert( $update );
}
}
?>
Hope this was helpful!
Good luck!
Vladimir Ghetau