非关系型数据库Mongo基本SQL操作

Mongo数据库操作

在学习mongo之后因为没有系统的做过总结,就想在此写一篇比较系统比较全面的日常操作数据库的SQL操作总结。本文实时补充

//添加语句

db.COLLECTION_NAME.insert(document)

db.data.insert({
	title:'测试添加操作',
	by:'YueYang',
	time:'11:08'
});
WriteResult({ "nInserted" : 1, "writeConcernError" : [ ] })

// 删除操作

db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)

db.data.remove({
	by:'YueYang'
});
WriteResult({ "nRemoved" : 1, "writeConcernError" : [ ] })

// 更改操作

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

db.data.update({"title":"测试添加操作"},{$set:{"title":"测试更新操作"}});

WriteResult({
	"nMatched" : 1,
	"nUpserted" : 0,
	"nModified" : 1,
	"writeConcernError" : [ ]
})

db.data.update({"title":"测试添加操作"},{$set:{"title":"测试更新操作"}},{multi:true});

WriteResult({
	"nMatched" : 2,
	"nUpserted" : 0,
	"nModified" : 2,
	"writeConcernError" : [ ]
})

// 查询操作

db.data.find({"by":"YueYang"});

_id            				title    	by		time
5dafd24abc1b000007001bf7	测试更新操作	YueYang	11:08
5dafd2e5bc1b000007001bf8	测试更新操作	YueYang	12:10

条件操作

MongoDB中条件操作符有:

大于			$gt
小于			$lt
大于等于 	$gte
小于等于		$lte
不等于		$ne
等于			$eq
包含于 		$in


db.data.find({age: {$gt : 18}}); -- select * from data where age > 18;

模糊查询

查询 title 包含"测试"字的文档:
db.data.find({title:/测试/});

查询 title 字段以"教"字开头的文档:
db.data.find({title:/^测试/});

查询 titl e字段以"教"字结尾的文档:
db.data.find({title:/教$/});

模糊查询查询字段掌握了正则表达式就很容易扩展出来啦~
三种正则表达式方式:

{ < field >: { $ regex : / pattern / , $ options : ‘’ } }
{ < field >: { $ regex : ‘pattern’ , $ options : ‘’ } }
{ < field > : { $ regex : / pattern / < options > } }

排序

// 数据排序

db.data.find().sort({title:1}); 

// 其中 1 为升序排列,而 -1 是用于降序排列

分组操作

db.data.aggregate([{
    $group: {
        _id: {
            title: '$title',
            by: '$by'
        },
        count: {
            $sum: 1
        }
    }
}, {
    $match: {
        count: {
            $gt: 1
        }
    }
}]);

$group
将集合中的文档分组,可用于统计结果
_id表示分组的依据,使用某个字段的格式为'$字段'。

$match
用于过滤数据,只输出符合条件的文档

删除重复数据

// 前面写查询语句,对结果数据进行去重
.forEach(function(it) {
    it.dups.shift();
    db.data.remove({
        _id: {
            $in: it.dups
        }
    });
});

问题整理:

删除_id失败?

对_id直接进行remove删除失败,是因为_id是ObjectId类型,而id是字符串类型,类型对应不上就会导致删除失败。
解决方法就是把id转换成ObjectId:

db.data.remove({_id:ObjectId('1013')});
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值