使用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
广告
将在 10 秒后关闭
bannerAds