使用Node.js和MongoDB实现自增字段
想做的事
我希望能够使用Node.js和mongodb实现自动递增。
作为例子,有以下的用户集合’users’:
db.createCollection('users');
通过程序控制以下ID的增加。
db.users.insert({id: 1, name: 'Taro'});
db.users.insert({id: 2, name: 'Jiro'});
db.users.insert({id: 3, name: 'Saburo'});
计数器集合的设置
在终端上输入”mongo”,然后使用”use”命令切换数据库,接着执行以下脚本。
db.counters.insert({
id: "user_id",
seq: 0
});
Node.js的一侧。
在下面的脚本中,countersColl.findAndModify({id: “user_id”}…中的”user_id”被设置为与counter集合中的字符串相同。
// MongoDB
var MongoClient = require('mongodb').MongoClient;
// MongoDBに接続をする
MongoClient.connect('mongodb://localhost:27017/test', function(err, db){
// countersコレクションを取得
var countersColl = db.collection('counters');
// usersコレクションを取得
var usersColl = db.collection('users');
countersColl.findAndModify({id: "user_id"}, [], { $inc: { seq: 1 } }, {new: true}, function(err, ret){
// auto_incrementされたuser_idが取得できた
var newUserId = ret.value.seq;
// ユーザーを追加
usersColl.insert({
id: newUserId,
name: "Taro"+newUserId
});
});
});
确认动作
)通过运行 server.js 三次,使用 mongo 命令进行确认(虽然强制使用 Ctrl+c 来终止感觉有些不够自然)。
$ node server.js
^C
$ node server.js
^C
$ node server.js
^C
$ mongo
MongoDB shell version: 3.0.3
> use test
switched to db test
> db.users.find()
{ "_id" : ObjectId("55e72eb0469dba70dd789b4b"), "id" : 1, "name" : "Taro1" }
{ "_id" : ObjectId("55e72f6fb770fc2fdecb4fed"), "id" : 2, "name" : "Taro2" }
{ "_id" : ObjectId("55e72fa2d117804fde08606d"), "id" : 3, "name" : "Taro3" }
>
请提供更多的上下文或具体的句子,以便我能够更好地为您翻译。
-
- http://docs.mongodb.org/master/tutorial/create-an-auto-incrementing-field/
- http://mongodb.github.io/node-mongodb-native/2.0/api/Collection.html#findAndModify