首页 / MONGODB / mongodb 常用操作
mongodb 常用操作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mongodb 常用操作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3810字,纯文字阅读大概需要6分钟。
内容图文
![mongodb 常用操作](/upload/InfoBanner/zyjiaocheng/522/72e59a7d15a54cceb491d06af93c8242.jpg)
mongodump.exe -h 127.0.0.1:27017 -d medicine -c jddj -o C:\MongoDB\Server\4.2\backup
#恢复
mongorestore.exe -h 127.0.0.1:27017 -d medicine -c jddj C:\MongoDB\Server\4.2\backup\medicine\jddj.bson
#导出json、csv数据
mongoexport.exe -h 127.0.0.1:27017 -d medicine -c jddj -o E:\爬虫项目\json\jddj.json
mongoexport.exe -h 127.0.0.1:27017 -d medicine -c jddj --type=csv -f 字段1,字段2,字段3 -o E:\爬虫项目\csv\jddj.csv
#导入json、csv数据
mongoexport.exe -h 127.0.0.1:27017 -d medicine -c jddj E:\爬虫项目\json\jddj.json
mongoimport.exe -h 127.0.0.1:27017 -d medicine -c jddj --type csv --headerline --file E:\爬虫项目\csv\jddj.csv
#日志分割
use admin
db.runCommand({logRotate:1})
#去重
#按照 名称、规格 聚合查询去重
db.jddj.aggregate(
[
//{$match:{type:1,action:3}}, //可以加条件给这里 匹配type=1 action=3 可选
{ //根据 名称、规格 分组,$group只会返回参与分组的字段,使用$addToSet在返回结果数组中增加_id字段)
$group: {
_id: {名称: ‘$名称‘,规格: ‘$规格‘},
count: {
$sum: 1
},
dups: {
$addToSet: ‘$_id‘
}
}
},
{
$match: {
count: { //(匹配数量大于1的数据
$gt: 1
}
}
}
],
{allowDiskUse: true}
)
.forEach( //(使用forEach循环根据_id删除数据)
function( doc ){
doc.dups.shift();
db.jddj.remove(
{
_id: {
$in: doc.dups
}
}
);
}
)
#模糊查询(查找key为“名称”,value包含“小儿热速清颗粒”的数据)
db.jddj.find({"名称":{$regex:"小儿热速清颗粒"}})
db.test_info.find({"name": {$regex: ‘测试‘, $options:‘i‘}})
i 忽略大小写,{<field>:{$regex/pattern/i}},设置i选项后,模式中的字母会进行大小写不敏感匹配。
m 多行匹配模式,{<field>:{$regex/pattern/,$options:‘m‘}},m选项会更改^和$元字符的默认行为,分别使用与行的开头和结尾匹配,而不是与输入字符串的开头和结尾匹配。
x 忽略非转义的空白字符,{<field>:{$regex:/pattern/,$options:‘m‘}},设置x选项后,正则表达式中的非转义的空白字符将被忽略,同时井号(#)被解释为注释的开头注,只能显式位于option选项中。
s 单行匹配模式{<field>:{$regex:/pattern/,$options:‘s‘}},设置s选项后,会改变模式中的点号(.)元字符的默认行为,它会匹配所有字符,包括换行符(\n),只能显式位于option选项中。
使用$regex操作符时,需要注意下面几个问题:
i,m,x,s可以组合使用,例如:{name:{$regex:/j*k/,$options:"si"}}
在设置索引的字段上进行正则匹配可以提高查询速度,而且当正则表达式使用的是前缀表达式时,查询速度会进一步提高,例如:{name:{$regex: /^joe/}
#查询重复
db.getCollection(‘jddj‘).aggregate([
{ $group: { _id : ‘$名称‘, count: { $sum : 1 } } },
{ $match: { count: { $gt : 1} } }
])
#查询存在、不存在某字段的数据
db.getCollection(‘jddj‘).find({"category1Id":{"$exists":true}})
db.getCollection(‘jddj‘).find({"category1Id":{"$exists":false}})
db.jddj.aggregate([
{$match:
{"category1Id":{"$exists":true}}
},
])
db.jddj.aggregate([
{$match:
{"category1Id":{"$exists":false}}
},
])
#聚合查询(多次match,并删除查询结果)
db.jddj.aggregate([
{$match:
{"名称":{$regex:"小儿热速清颗粒"}}
},
{$match:
{规格:{$exists:false}}
},
{$group:
{_id:null,
dups: {$addToSet:‘$_id‘}
}
}
],
{allowDiskUse: true}
)
.forEach(
function( doc ){
db.jddj.remove(
{
_id: {
$in: doc.dups
}
}
);
}
)
#根据重复的 名称,去除不包含 规格 的数据
db.getCollection(‘jddj‘).aggregate([
{ $group: { _id : ‘$名称‘, count: { $sum : 1 } } },
{ $match: { count: { $gt : 1} } },
{ $group: { _id: null, dups1: {$addToSet:‘$_id‘}}
}
])
.forEach(
function( doc1 ){
db.getCollection(‘jddj‘).aggregate([
{ $match: { 名称: { $in : doc1.dups1} } },
{ $match: { 规格: { $exists: false}} },
{ $group:{ _id: null,dups: { $addToSet: ‘$_id‘}} }
])
.forEach(
function( doc ){
db.jddj.remove(
{
_id: {
$in: doc.dups
}
}
);
}
)
}
)
#Mongodb查询结果插入新建表中
var result = db.原始表名.find({"查询条件"})
while(result.hasNext()) db.新建表名.insert(result.next())
mongodb 常用操作
标签:ps1 项目 sum cti result log 而不是 pre code
本文系统来源:https://blog.51cto.com/fengjicheng/2484450
内容总结
以上是互联网集市为您收集整理的mongodb 常用操作全部内容,希望文章能够帮你解决mongodb 常用操作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。