-
启动服务,并设定mongoDB的存储路径
mongod --dbpath 路径
-
启动mongo客户端,运行在控制台输入mongo命令
$ mongo
-
显示当前存储位置所有的数据库
$ show dbs
-
切换/创建 数据库
$ use 数据库名
-
打印当前所处的数据库
$ db
-
为数据库创建集合
$ db.createcollection ("集合名")
-
在集合里面插入数据 / 如果集合不存在,会隐式的创建集合
$ db.集合名.insert (bson)
-
查找集合中的数据
$ db.集合名.find ( 【条件】 )
-
删除数据
$ db.集合名.deleteone ( 【条件】)
$ db.集合名.deleteMany( 【条件】)
-
删除集合
$ db.集合名.drop()
Mongoose
条件操作符
### 条件操作符
$ or 或关系
$ nor 或关系取反
$ gt 大于
$ gte 大于等于
$ lt 小于
$ lte 小于等于
$ ne 不等于
$ in 在多个值范围内
$ nin 不在多个值范围内
$ all 匹配数组中多个值
$ regex 正则,用于模糊查询
$ size 匹配数组大小
$ maxDistance 范围查询,距离(基于LBS) $mod 取模运算
$ near 邻域查询,查询附近的位置(基于LBS) $exists 字段是否存在
$ elemMatch 匹配内数组内的元素
$ within 范围查询(基于LBS)
$ box 范围查询,矩形范围(基于LBS)
$ center 范围醒询,圆形范围(基于LBS) $centerSphere 范围查询,球形范围(基于LBS) $slice 查询字段集合中的元素(比如从第几个之后,第N到第M个元素)
user为数据库暴露的接口
//统计总数
users.estimatedDocumentCount( function( err, data ){
console.log(data)
} )
//统计总数,条件为 user = "T元素"
users.countDocuments( {user: "T元素"}function( err, data ){
console.log(data);
} ) ;
//从第几个开始查找
user.find().skip();
//查找多少个
user.find().limit();
// 组合用法 exec 执行前面操作
user.find().skip( 0 ).limit( 10 ).exec( (err, data) => {
console.log(data);
// => 输出第 0 条到第 9 条 数据
} );
//排序 -1 倒叙(降序) 1正序(升序)
user.find().sort({ _id: -1 });
-----------------------------------------------------------------
//ref( “关联的数据表名” )
// populate 自动去关联的表里查找对应的数据
数据表.find().populate(“ 有ref的字段 ” ).exec( (err, data) => {
console.log( data )
} )
Schema({
author: { ref: "user", type: mongoose.Schema.TypeObjectId }
})
-例
article.find( (err, data) =>{
user.findById( data[0].author );
});
-例
//一个用户发表多篇文章,每篇文章有单独的ID
//跳过文章 ID 为 1 的文章
article.find().populate( {
path: "author",
sort: {_Id: 1},
skip: Number,
//数据嵌套时可以在populate
} ).exec( (err, data) =>{
console.log(data);
})
----------------------------------
//selecr 选择 筛选
user.findOne( {username: "goudan"} ).select( "password" ).exec( (err, data) =>{
console.log(data); //=> 输出密码一条数据
} );
//出现 账号 和 密码 空格隔开
user.findOne( {username: "goudan"} ).select( "username password" ).exec( (err, data) =>{
console.log(data); //=> 输出密码一条数据
} );
//另一种写法
//完整写法 传对象
数据表.find().populate( { path: "有ref的字段",select: "password"} ).exec( (err, data) => {
console.log( data ); // => 筛选 只输出 密码
} )
//简写 传字符串
数据表.find().populate( "有ref的字段","password" ).exec( (err, data) => {
console.log( data ); // => 筛选 只输出 密码
} )