惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The GitHub Blog
The GitHub Blog
MyScale Blog
MyScale Blog
爱范儿
爱范儿
GbyAI
GbyAI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
美团技术团队
Y
Y Combinator Blog
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
Martin Fowler
Martin Fowler
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
M
MIT News - Artificial intelligence
博客园 - Franky
V
Visual Studio Blog
I
InfoQ
V
V2EX
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
博客园 - 司徒正美
L
LangChain Blog

风萧古道 - 勤学苦练,年复一年

AI 编程时代,想象力成了最被奖励的能力 游戏服务器开发经验(五)应对复杂需求 沉浸式体验东汉末年生活 - 《真三国无双 起源》玩后感 怒其不争!致2025年HLTV的Top18-NiKo Linux家用服务器维护指南 游戏服务器开发经验(四)避免写Bug的习惯、技巧和心态 游戏服务器开发经验(三)线上维护 游戏服务器开发经验(二)避免内存泄露 游戏服务器开发经验(一)道具防刷 35岁找不到工作,绝对不会是软件开发人员的结局 用爱发电项目开发两个月的心得体会 以魏延“子午谷奇谋”讨论软件需求可行性问题 MQTT协议中可变长度的具体计算方式(有计算过程解析) 关于游戏服务器配置表功能的探讨 Java并发编程中上锁的几种方式 如何用C++分割一个字符串? CSAPP第二章-信息的表示与处理 我的自我介绍 Windows XP虚拟机中文版无需激活下载 Java TreeSet的一些用法和特性 Linux C++ Socket实战 传统软件服务器与游戏服务器架构区别 独立个人项目开发心得 - 任务切分、挑战性、实用性和半途而废 使用Python实现简单UDP Ping 使用Python开发一个简单的web服务器 Kotlin手动实现一个最简单的哈希表 Kotlin实现二叉堆、大顶堆、优先级队列 搭建Spark实战环境(3台linux虚拟机集群)(一)样板机的搭建 Springboot操作MongoDB,包括增改查及复杂操作 Unison在Linux下的安装与使用
MongoDB常用查询语句
JonathanLin · 2020-02-09 · via 风萧古道 - 勤学苦练,年复一年

增删改查部分

MongoDB单条件查询

db.xxx.find({'city.value':'深圳市'})

文档部分json结构为:

{
    ...
    "city": {
        "chinese": "城市",
        "value": "深圳市"
    }
 
}

使用key.key的形式,得到对应的value。

MongoDB与查询

db.xxx.find({$and:[{'city.value':'深圳市'},{'status': 'finished'}]})

MongoDB的Group By和Having

db.xxx.aggregate(
    {
        $match: {
            'city.value':'马鞍山市'
        }
    },
    {
        $group : {
            _id : "$service",
            num_tutorial : {
                $sum : 1
            }
        }
    },
    {
        $match:{
            num_tutorial:{
                $gt:1
            }
        }
    }
)

$group指定对哪个属性分组,用num_tutorial来判断数量是否满足某个条件。 $gt:greater than

删除文档

db.xxx.remove({'city.value':'伊犁哈萨克自治州'})

删除重复数据

删除某个属性重复的数据,只保留第一条

db.xxx.aggregate(
    {
        $match:{
            'city.value':xxx
        }
    },
    {
        $group : {
            _id : "$service", 
            num_tutorial : {
                $sum : 1
            },
            dups:{
                $addToSet:'$_id'
            }
        }
    },
    {
        $match:{
            num_tutorial:{
                $gt:1
            }
        }
    }).forEach(doc2=>{
        doc2.dups.shift();
        db.bszn.remove({_id:{$in:doc2.dups}});
    })

为选中的文档增加属性 为“status”属性赋值为“finished”。

db.xxx.update({}, {$set:{'status':'finished'}},{multi: true})

为选中的文档删除属性 删除“status”属性。

db.xxx.update({}, {$unset:{'status':''}},{multi: true})

根据ObjectId查询

db.xxx.find({'_id': new ObjectId('5d7368fb5a32cfe8d8651781')})

向数组中插入值或对象

db.xxx.update({'_id': new ObjectId('5d7368fb5a32cfe8d8651781')},
{$push:{'某个字段''要插入的值'}})

Mongo导入导出

Mongo导出 – mongodump

mongodump -h 192.168.xx.xxx:xxxxx -u xxxx -p xxx -d xxxxx -c xxx -o W:\xxxxx\dump\someDirectory
  • -h 服务器ip:端口号
  • -u 用户名
  • -p 密码
  • -d 选择的数据库
  • -c 选择的集合(如果没有-c,则将所有集合导出备份)
  • -o 选择导出的目录

注意,如果出现

Failed: error writing data for collection `bigdata_znkf_crawl.fgcx` to disk: error reading collection: 
Failed to parse: { find: "fgcx", skip: 0, snapshot: true, 
$readPreference: { mode: "secondaryPreferred" }, 
$db: "bigdata_znkf_crawl" }. Unrecognized field 'snapshot'.

则在后面加上:

--forceTableScan

Mongo导入 – mongorestore

mongorestore -h 192.168.xx.xxx:xxxxx -u xxx -p xxxx -d xx  -c xxx 
W:\xxxxxx.bson

Mongo数组查询

字符串数组

来源:https://www.jianshu.com/p/cf983a28c2da

使用$all操作: 最后那个文件前面不用 横杠+字母,直接选择一个.bson文件即可导入了。

db.fruitshop.find({"fruits":{"$all":["apple","banana"]}});

对象数组

来源:https://www.jb51.net/article/126911.htm

使用$elemMatch操作:

{ "qList": { $elemMatch: { "qid": 1, "reorderFlag": 0} } }

Mongo树查询(存在parent_id进行连接)

db.crawler_classify.aggregate([
    {$match: {'classify_id' : '94ebb480247d42dcb5c99a2ef19550ab'}},
    {$graphLookup : {from: 'crawler_classify', startWith: "$classify_id" , connectFromField: "classify_id", connectToField: "parent_id", as :"son"}}
    ])

Mongo插入语句

db.crawler_classify.insert({
    'xxxx': 'yyyy',
    'zzzz': 'aaa',
    ...
})