MongoDB 的 Nodejs 驱动基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB 的 Nodejs 驱动基础相关的知识,希望对你有一定的参考价值。

在学着写mongodb,用的nodejs。这里我把坑先记录好,以后可以慢慢找。这篇文章也慢慢更,为了篇幅简洁,全部略去对错误的处理。

基础操作:

1.增

 1 var mongo = require(‘mongodb‘).MongoClient
 2 var name = {
 3     city: ‘Wuhan‘,
 4     country: ‘China‘
 5 }
 6 mongo.connect(‘mongodb://localhost:27017/test‘, function(err, db) {
 7     var collection = db.collection(‘docs‘)
 8     collection.insert(name, function(err, data) {
 9         console.log(JSON.stringify(name))
10         db.close()
11     })    
12 })

插入很简单,inset即可。但是注意回调函数的第二个参数:data,并不是我们插入的数据,而是被包裹了的。这个例子中,我把data的属性名和值都打印出来,是这么个对象:

{
    result: {
        ok: 1,
        n: 1
    },
    ops: [{
        city: ‘Wuhan‘,
        country: ‘China‘,
        _id: 58 c3f78ea3104d15f8125564
    }],
    insertedCount: 1,
    insertedIds: [58 c3f78ea3104d15f8125564]
}

可以看出返回了插入后的各种信息,被插入的文档被ops包裹,并且是个数组。如果单个插入的话就是在数组第一个元素。

 

2.删

删除也是比较容易的,不过加了个查询的过程。上代码:

 

1 var mongo = require(‘mongodb‘).MongoClient
2 mongo.connect(‘mongodb://localhost:27017/test‘, function(err, db) {
3     var collection = db.collection(‘doc‘)
4     collection.remove({
5         city: ‘Wuhan‘
6     }, function(err, data) {
7         db.close()
8     })
9 })

 

使用remove,第一个参数是删除的条件,我们在这里删除具有city为Wuhan的条目。

3.查

具有删的经验的话,查也是容易的。

 

var mongo = require(‘mongodb‘).MongoClient
mongo.connect(‘mongodb://localhost:27017/test‘, function(err, db) {
    var collection = db.collection(‘doc‘)
    collection.find({
        "age": {
            "$gt": 30
        }
    }, {
        name: 1,
        age: 1,
        _id: 0
    }).toArray(function(err, doc) {
        db.close()
    })
})

 

我们这里使用了条件查找,第一个参数是查找出age大于30的条目,第二个是只返回name和age,不返回_id。第三个是回调函数,传入的第二参数是查找到的对象,以数组排列。如果没找到就返回空数组,找到几个条目返回几条。

4.改

update操作稍难。比较复杂。

 

var mongo = require(‘mongodb‘).MongoClient
mongo.connect(‘mongodb://localhost:27017/test‘ , function(err, db) {
    var collection = db.collection(‘doc‘)
    collection.update({
        city: ‘Wuhan‘‘
    }, {
        $set: {
            province: ‘Hubei‘
        }
    }, function(err, data) {
        db.close()
    })
})

 

这是最简单的操作,先找出city为Wuhan的条目,然后将这些条目添加province为Hubei的键值对。

5.数组操作

暂时只用到了$push方法,肯定会越用越多,跟update方法类似,不过不用$set。

 

var mongo = require(‘mongodb‘).MongoClient
mongo.connect(‘mongodb://localhost:27017/test‘, function(err, db) {
        var collection = db.collection(‘question‘)
        collection.update({
            province: ‘Hubei‘
        }, {
            $push: {
                cities: ‘Huangshi‘
            }
        }, function(err, data) {
            db.close()
        })
    })

 

这段可以将原本为

1 {
2     province: ‘Hubei‘,
3     cities: [‘Wuhan‘]
4 }

的条目增加一个属性,变为

1 {
2     province: ‘Hubei‘,
3     cities: [‘Wuhan‘, ‘Huangshi‘]
4 }

这就是push操作。

 

以上是关于MongoDB 的 Nodejs 驱动基础的主要内容,如果未能解决你的问题,请参考以下文章

Promise 和 nodejs MongoDB 驱动程序

mongodb驱动的正确使用方法

nodejs驱动mongodb 实现数据增删改查

NodeJS 本机驱动程序上的示例 MongoDB 错误是啥样的?

从 NodeJS 原生 mongodb 驱动程序获取 MongoDB 操作 id 以用于 db.killOp

MongoDB NodeJS驱动的browserify兼容性(调试帮助)