插入文档
文档的数据结构和JSON基本一样。
所有存储在集合中的数据都是BSON格式。
BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON
要将数据插入到mongodb集合中,需要使用mongodb的insert()或save()方法
js
db.集合名.insert(document)
比如我们可以插入以下数据
js
db.wscats.insert({
_id: 100,
title: ‘MongoDB Tutorials’,
description: ‘node_tutorials’,
by: ‘Oaoafly’,
url: ‘https://github.com/Wscats/node-tutorial’,
tags: [‘wscat’,‘MongoDB’, ‘database’, ‘NoSQL’,‘node’],
num: 100,
})
也可以支持插入多个,注意传入的是数组形式
js
db.wscats.insert([{
_id: 100,
title: ‘Hello’
},{
_id: 101,
title: ‘World’
}])
在插入的文档中,如果不指定_id参数,那么mongodb会为此文档分配一个唯一的ObjectId
要插入文档,也可以使用db.post.save(document)
。如果不在文档中指定_id,那么save()
方法将与insert()
方法一样自动分配ID的值。如果指定_id,则将以save()方法的形式替换包含**_id**的文档的全部数据。
js
db.wscats.save({
_id: 111,
title: ‘Oaoafly Wscats’,
})
更新文档
1.update()方法
寻找第一条title为wscats的值,并且更新值title为corrine和age为12
js
db.age.update({
‘title’: ‘wscats’
}, {
KaTeX parse error: Expected 'EOF', got '}' at position 54: …age': 12 } }̲) 默认情况下,mong…set: {
‘title’: ‘corrine’,
‘age’: 12
}
}, {
multi: true
})
2.save()方法
将
_id
主键为3的文档,覆盖新的值,注意_id
为必传
db.age.save({
‘_id’:3,
‘title’: ‘wscats’
})
删除文档
删除主键
_id
为3的文档,默认是删除多条
js
db.age.remove({
‘_id’:3
})
建议在执行remove()
函数前先执行find()
命令来判断执行的条件是否正确
如果你只想删除第一条找到的记录可以设置justOne为1,如下所示
js
db.age.remove({…},1)全部删除
js
db.age.remove({})
排序
在mongodb中使用使用
sort()
方法对数据进行排序,sort()
方法可以通过参数指定排序的字段,并使用1和-1来指定排序的方式,其中1为升序排列,而-1是用于降序排列。
1 升序排列
-1 降序排列
js
db.集合名.find().sort({键值(属性值):1})
把age
集合表重新根据_id
主键进行降序排列
js
db.age.find().sort({
“_id”: -1
})
数据库操作
1.连接数据库
js
var MongoClient = require(‘mongodb’).MongoClient;
//结尾是选择数据库名
var DB_CONN_STR = ‘mongodb://localhost:27017/wscats’;
MongoClient.connect(DB_CONN_STR, function(err, db) {
console.log(“连接成功!”);
});
2.查询数据
注意查询回来的结果需要toArray来遍历处理
js
var MongoClient = require(‘mongodb’).MongoClient;
var DB_CONN_STR = ‘mongodb://localhost:27017/wscats’;
MongoClient.connect(DB_CONN_STR, function(err, db) {
console.log(“连接成功!”);
//选中age集合,并用find方法把结果集拿回来进行处理
db.collection(“age”).find({title: “cba”}).toArray(function(err, result) {
if (err) {
console.log(‘Error:’ + err);
return;
}
console.log(result);
});
});
查询ID
查询自动生成的
ObjectId
js
var ObjectId = require(‘mongodb’).ObjectId;
let _id = ObjectId(“5bcae50ed1f2c2f5e4e1a76a”);
db.collection(‘xxx’).find({
“_id”: _id
}).forEach(function (item) {
console.log(item)
})
3.插入数据
insert函数第一个参数是需要插入的值(可以一个也可以多个),第二个参数是接受一个回调函数,当值插入成功后回返回插入值得一些关键信息,比如
_id
js
var MongoClient = require(‘mongodb’).MongoClient;
var DB_CONN_STR = ‘mongodb://localhost:27017/wscats’;
MongoClient.connect(DB_CONN_STR, function(err, db) {
console.log(“连接成功!”);
const db = client.db(“demo”);
db.collection(“age”).insert([
{
title: “插入的值A”
}, {
title: “插入的值B”
}
], function(err, result) {
if (err) {
console.log(‘Error:’ + err);
return;
}
console.log(result)
})
});
4.更新数据
注意如果不加 s e t 就 是 完 全 替 换 原 来 的 那 份 ( 没 有 设 置 的 属 性 值 将 会 丢 失 ) , 加 上 set就是完全替换原来的那份(没有设置的属性值将会丢失),加上 set就是完全替换原来的那份(没有设置的属性值将会丢失),加上set则只是更新对应的属性值,其余不做改变
var MongoClient = require(‘mongodb’).MongoClient;
var DB_CONN_STR = ‘mongodb://localhost:27017/wscats’;
MongoClient.connect(DB_CONN_STR, function(err, db) {
console.log(“连接成功!”);
db.collection(“age”).update({
“_id”: 1
}, {
$set: {
title: “你好,世界”,
skill: “js”
}
}, function(err, result) {
if (err) {
console.log(‘Error:’ + err);
return;
}
//console.log(result);
});
});
5.删除数据
js
var MongoClient = require(‘mongodb’).MongoClient;
var DB_CONN_STR = ‘mongodb://localhost:27017/wscats’;
MongoClient.connect(DB_CONN_STR, function(err, db) {
console.log(“连接成功!”);
db.collection(“age”).remove({
“_id”: 1
}, function(err, result) {
if (err) {
console.log(‘Error:’ + err);
return;
}
//console.log(result);
//关闭数据库
db.close();
});
});
6.关闭数据库
js
db.close();