09-设置写入关注和其他请求选项
19.1.7 设置写入关注和其他请求选项
使用Node.js MongoDB驱动程序连接到MongoDB 明白Node.js MongoDB驱动程序中的对象后,便可以开始在Node.js应用程序中实现MongoDB了。本节将引导您在Node.js应用程序中逐步实现MongoDB。 请执行如下步骤,使用Node.js MongoDB驱动程序创建第一个Node.js MongoDB应用程序。 1.如果还没有安装Node.js,请访问http://nodejs.org/,按说明下载并安装用于您的开发平台的Node.js。 2.确保将可执行文件node所在的文件夹添加到了系统路径中,从而能够在控制台提示符下执行命令node和npm。 3.在code文件夹中,创建文件夹hour19、hour20和hour21。打开一个控制台窗口,依次切换到上述每个文件夹,并使用如下命令在其中安装MongoDB Native Node.js驱动程序。 4.核实创建了下述所有文件夹: ● code/hour19/node_modules/mongodb ● code/hour20/node_modules/mongodb ● code/hour21/node_modules/mongodb 5.确保启动了MongoDB服务器。 6.再次运行脚本文件code/hour05/generate_words.js以重置数据库words。 7.在文件夹code/hour19中新建一个文件,并将其命名为NodejsConnect.js。 8.在这个文件中输入程序清单19.1所示的代码。这些代码创建MongoClient、Database和Collection对象,并检索文档。 9.将这个文件存盘。 10.打开一个控制台窗口,并切换到目录code/hour19。 11.执行下面的命令来运行这个Node.js应用程序。程序清单19.2 显示了这个应用程序的输出。您创建了第一个MongoDB Node.js应用程序。 程序清单19.1 NodejsConnect.js:在Node.js应用程序中连接到MongoDB数据库 程序清单19.2 NodejsConnect.js-output:在Node.js应用程序中连接到MongoDB数据库的输出 ▲
您可能注意到了,在前几节的表格中,有多个方法都包含参数options,在这个参数中可指定的选项随方法而异。
写入数据的数据库操作使用写入关注,它指定了返回前如何核实数据库写入。
在JavaScript对象参数options中,可设置的一些选项如下。
- w:设置写入关注。1表示确认,0表示不确认,majority表示已写入大部分副本服务器。
- j:设置为true或false,以启用或禁用日记确认。
- wtimeout:等待写入确认的时间,单位为毫秒。
- fsync:如果为true,写入请求将等到fsync结束再返回。
例如,下面的Node.js代码创建了一个JavaScript对象,以指定基本的写入关注和更新选项:
var options = {'w' : 1, 'j' : True, 'wtimeout': 10000, 'fsync': true};
要设置读取首选项,可在参数options中将readPreference设置为下面的值之一:
npm install mongodb
- ReadPreference.PRIMARY;
- ReadPreference.PRIMARY_PREFERRED;
- ReadPreference.SECONDARY;
- ReadPreference.SECONDARY_PREFERRED;
- ReadPreference.NEAREST。
例如,下面的代码将读取首选项设置为从副本集的主节点读取:
ReadPreference = require('mongodb').ReadPreference;
. . .
var options = {'readPreference': ReadPreference.PRIMARY};
▼ Try It Yourself
node NodejsConnect.js
01 var MongoClient = require('mongodb').MongoClient;
02 var Server = require('mongodb').Server;
03 var mongo = new MongoClient();
04 mongo.connect("mongodb://localhost/", function(err, db) {
05 var myDB = db.db("words");
06 myDB.collection("word_stats", function(err, collection){
07 collection.count(function(err, count){
08 console.log("Number of Items: ");
09 console.log(count);
10 myDB.close();
11 });
12 });
13 });
Number of Documents:
2673