MongoDB 连接方法
MongoDB连接方法包含了用于启用和关闭与数据库的连接的所有方法。
connect (url, user, password)
connect方法用于建立与MongoDB对象的连接。该方法同时返回对数据库的引用。在某些情况下,我们可以使用Mongo()实例及其getDB()方法来代替。
示例
db = connect("localhost:27017/JTPDatabase")
上述查询将返回一个对JTPDatabase的引用,并在本地主机接口上实例化一个新的连接到MongoDB对象,以及:
Mongo(host, ClientSideFieldLevelEncryptionOptions)
mongo是一个JavaScript构造函数,用于创建属于mongo shell或JavaScript文件的数据库连接的实例。
示例
使用以下查询将创建一个来自mongo shell的新连接对象:
cluster = Mongo("mongodb://mymongo.example.net:27017/?replicaSet=myMongoCluster")
与mymongo.example.net:27017集群进行交互,我们将针对集群对象执行以下查询:
myDB = cluster.getDB("myDB");
myColl = myDB.getCollection("myColl");
Mongo.getDB(<database>)
getDB方法用于访问属于mongo shell或JavaScript文件的数据库对象。
示例
db = new Mongo().getDB("JTPDatabase");
上述查询在本地主机接口上建立了一个新的连接到运行的MongoDB对象,并返回对”JTPDatabase”的引用:
Mongo.isCausalConsistency()
正如此方法的名称所暗示的,casual consistency被用于返回一个布尔结果,该结果指示实例的casual consistency是否在连接对象上启用。
var conn = Mongo("localhost:27017");
conn.isCausalConsistency()
示例
db.getMongo().isCausalConsistency();
以上查询确定了Mongo连接对象上是否启用了因果一致性,该连接对象与mongo shell的全局数据库变量相关联:
Mongo.setCausalConsistency(<boolean>)
setcasualconsistency()方法在指定的连接对象上启用或禁用因果一致性。默认情况下,此方法会删除对象的连接。
示例
以下查询在与mongo shell的全局数据库变量相关联的MongoDB实例上启用了因果一致性:
db.getMongo().setCausalConsistency();
如果你想检查连接是否启用了因果一致性。你可以使用Mongo.isCausalConsistency()方法。
db.getMongo().isCausalConsistency();
Mongo.setReadPref(mode, tagSet)
setReadPref方法用于Mongo连接对象,以控制客户端路由对指定副本集成员的所有查询的反应。
示例
以下示例中使用了读取偏好模式,将读取操作定向到辅助成员。
db.getMongo().setReadPref('secondary')
对于特定标签,次级标签将包括标签设置数组:
db.getMongo().setReadPref(
"secondary",
[ { "datacenter": "JTP" },
{ "region": "North"},
{ } ])
Mongo.startSession(<options>)
开始会话方法用于为连接启动会话。会话ID将由 Mongo shell 分配给与会话关联的命令。
示例
db = db.getMongo().startSession({retryWrites: true, causalConsistency: true}).getDatabase(db.getName());
要启用可重试写入的会话,您必须使用上面的查询来启用具有因果一致性的功能。
Mongo.watch(pipeline, options)
watch方法允许我们为指定的副本集或指定的分片集群打开一个变更流游标。 除了本地、配置和管理员数据库之外,副本集将被更改以报告其特定数据库中所有非系统集合的变化。
示例
查询示例在mongoShell的副本集上打开了一个变更流游标。 除了管理、本地和配置数据库之外,所有数据库将通过返回的游标报告对所有非系统集合的数据更改。
watchCursor = db.getMongo().watch()
我们可以使用cursor.isExhausted()方法来迭代游标,以检查是否有新事件,并确保循环仅在对流游标进行更改的情况下退出。
while (!watchCursor.isExhausted())
{
if (watchCursor.hasNext()){
printjson(watchCursor.next());
}}
Session()
session方法在mongo shell中为连接建立会话对象。使用Mongo.startSession()在mongo shell中为连接建立会话,
示例
将在与mongo shell全局数据库变量关联的Mongo连接对象上启动一个会话。然后,使用Session.getDatabase()方法检索与该会话关联的数据库对象。
var session = db.getMongo().startSession();
db = session.getDatabase(db.getName());