热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MongoDB基础知识(一)

一、Mongo的常用命令

1、配置的基础命令

(1)创建用户 

db.createUser({ 
    user: 'root', 
    pwd: 'root', 
    roles: [ "root" ] 
});

(2)查看所有用户信息  show users 

MongoDB 基础知识 (一)

 (3)查看当前的所有数据库  show databases 

MongoDB 基础知识 (一)

(4)查看当前的数据库   db 

MongoDB 基础知识 (一)

 (5)切换数据库, 格式:use {数据库名}

MongoDB 基础知识 (一)

2、插入数据

db.集合.insertOne() // 添加单个文档
db.集合.insertMany([{},{}]) // 批量添加文档
db.集合.insert() // 添加单个文档

 

insertOne, 和 insertMany命令不支持 explain命令;insert支持 explain命令;

 

插入文档时,如果没有显示指定主键,MongoDB将默认创建一个主键,字段固定为 _id。

(1)插入单条数据,格式

db.{集合名}.insertOne(
  doc,
  {
    writeConcern: 安全级别 // 可选字段
  }
)

 <1> writeConcern 定义了本次文档创建操作的安全写级别,决定一个写操作落到多少个节点上才算成功。 writeConcern的取值包括:

    0: 发起写操作,不关心是否成功;
    1-: 集群中最大数据节点数,写操作需要被复制到指定节点数才算成功;
    majority: 写操作需要被复制到大多数节点上才算成功;
发起写操作的程序将阻塞到写操作到达指定的节点数为止;

例如:

db.members.insertOne({
    name : "zhangsan",
    age: 12,
    sex : "m"
})

-MongoDB 基础知识 (一)

<2> 插入文档时,如果没有显示指定主键,MongoDB将默认创建一个主键,字段固定为_id, ObjectId() 可以快速生成的12字节id 作为主键,ObjectId 前四个字节代表了主键生成的时间,精确到秒。主键ID在客户端驱动生成,一定程度上代表了顺序性,但不保证顺序性, 可以通过ObjectId("id值").getTimestamp() 获取创建时间。

 MongoDB 基础知识 (一)

 getTimestamp() 获取到的创建时间为0时区的,转为北京时间需要增加8小时。

 

(2)插入多条数据,格式

db.{集合名}.insertMany(
  [ {doc } , {doc }, ....],
  {
    writeConcern: doc,
    ordered: true/false
  }
)

ordered:  觉得是否按顺序进行写入;

顺序写入时,一旦遇到错误,便会退出,剩余的文档无论正确与否,都不会写入;
乱序写入时,则只要文档可以正确写入就会正确写入,不管前面的文档是否是错误的文档;

例如:

db.members.insertMany([
    { name: "lisi", age: 25, status: "A", tags: [ "blank", "red" ] },
    { name: "wangwu", age: 50, status: "A", tags: [ "red", "blank" ] }
  ],
  {
    ordered: true
  }
);

 MongoDB 基础知识 (一)

3、查询数据

格式:

db.{集合名}.find({})               查询所有的文档 
db.{集合名}.find({}).pretty()      返回格式化后的文档

 先插入数据

db.inventory.insertMany([
  { item: "journal", qty: 25, status: "A", size: { h: 14, w: 21, uom: "cm" }, tags: [ "blank", "red" ] },
  { item: "notebook", qty: 50, status: "A", size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank" ] },
  { item: "paper", qty: 10, status: "D", size: { h: 8.5, w: 11, uom: "in" }, tags:[ "red", "blank", "plain" ] },
  { item: "planner", qty: 0, status: "D", size: { h: 22.85, w: 30, uom: "cm" }, tags: [ "blank", "red" ] },
  { item: "postcard", qty: 45, status: "A", size: { h: 10, w: 15.25, uom: "cm" }, tags: [ "blue" ] }
 ]);

(1)精确查询

// 查询inventory集合中,status为"D"的文档
db.inventory.find( { status: "D" } )          

// 查询inventory集合中,qty为0的文档
db.inventory.find( { qty: 0 } )           

(2)多条件查询

// 查询inventory集合中,qty为并且status值为"D"的文档
db.inventory.find( { qty: 0, status: "D" } );

(3)嵌套对象精准查询

// 查询inventory集合中,size对象中的uom属性为"in"的文档
db.inventory.find( { "size.uom": "in" } );

 (4)返回指定字段

// 查询inventory集合中的所有数据, 只返回item, status字段
db.inventory.find({ }, { item: 1, status: 1 } );

默认会返回_id 字段, 同样可以通过指定 _id:0 来不返回_id 字段;1 ----表示返回结果中包含指定属性字段; 0 ---表示返回结果中不包含指定属性字段;

注意:指定字段返回,要么全部指定为1,要么全部指定为0;(即要么全部指定为返回哪些字段,要么全部指定为不返回哪些字段)

 (5)条件查询 and 

// 查询inventory集合中,qty为45,并且status为"A"的文档
db.inventory.find({$and:[{qty:45},{status:"A"}]}); 

  (6)条件查询 or

// 查询inventory集合中,qty为10,或者status为"A"的文档
db.inventory.find({$or:[{qty:10},{status:"A"}]})

 Mongo查询条件和SQL查询对照表

MongoDB 基础知识 (一)

 

 

 

 

 

 


推荐阅读
  • 为了在Fragment中直接调用Activity的方法,可以通过定义一个接口并让Activity实现该接口来实现。具体步骤包括:首先在Fragment中声明一个接口,并在Activity中实现该接口。接着,在Fragment中通过类型转换检查Activity是否实现了该接口,如果实现了则调用相应的方法。这种方法不仅提高了代码的解耦性,还增强了模块间的通信效率。此外,还可以通过ViewModel或LiveData等现代Android架构组件进一步优化这一过程,以实现更加高效和可靠的通信机制。 ... [详细]
  • 通过优化模板消息机制,本研究提出了一种高效的信息化推送方案。该方案利用获取的访问令牌(access token)和指定的模板ID,实现了精准且快速的信息推送,显著提升了用户体验和信息传递效率。具体实现中,通过调用相关API接口,确保了消息的准确性和及时性,为用户提供更加便捷的服务。 ... [详细]
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 深入解析JWT的实现与应用
    本文深入探讨了JSON Web Token (JWT) 的实现机制及其应用场景。JWT 是一种基于 RFC 7519 标准的开放性认证协议,用于在各方之间安全地传输信息。文章详细分析了 JWT 的结构、生成和验证过程,并讨论了其在现代 Web 应用中的实际应用案例,为开发者提供了全面的理解和实践指导。 ... [详细]
  • 本文作为“实现简易版Spring系列”的第五篇,继前文深入探讨了Spring框架的核心技术之一——控制反转(IoC)之后,将重点转向另一个关键技术——面向切面编程(AOP)。对于使用Spring框架进行开发的开发者来说,AOP是一个不可或缺的概念。了解AOP的背景及其基本原理,对于掌握这一技术至关重要。本文将通过具体示例,详细解析AOP的实现机制,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 微信支付授权目录配置详解及操作步骤
    在使用微信支付时,若通过WeixinJSBridge.invoke方法调用支付功能,可能会遇到“当前页面URL未注册”的错误提示,导致get_brand_wcpay_request:fail调用微信JSAPI支付失败。为解决这一问题,需要正确配置微信支付授权目录,确保支付页面的URL已成功注册。本文将详细介绍微信支付授权目录的配置步骤和注意事项,帮助开发者顺利完成支付功能的集成与调试。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 掌握PHP框架开发与应用的核心知识点:构建高效PHP框架所需的技术与能力综述
    掌握PHP框架开发与应用的核心知识点对于构建高效PHP框架至关重要。本文综述了开发PHP框架所需的关键技术和能力,包括但不限于对PHP语言的深入理解、设计模式的应用、数据库操作、安全性措施以及性能优化等方面。对于初学者而言,熟悉主流框架如Laravel、Symfony等的实际应用场景,有助于更好地理解和掌握自定义框架开发的精髓。 ... [详细]
  • 本文深入探讨了数据库性能优化与管理策略,通过实例分析和理论研究,详细阐述了如何有效提升数据库系统的响应速度和处理能力。文章首先介绍了数据库性能优化的基本原则和常用技术,包括索引优化、查询优化和存储管理等。接着,结合实际应用场景,讨论了如何利用容器化技术(如Docker)来部署和管理数据库,以提高系统的可扩展性和稳定性。最后,文章还提供了具体的配置示例和最佳实践,帮助读者在实际工作中更好地应用这些策略。 ... [详细]
  • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
  • 结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法
    结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法 ... [详细]
  • 本课程详细介绍了如何使用Python Flask框架从零开始构建鱼书应用,涵盖高级编程技巧和实战项目。通过视频教学,学员将学习到Flask的高效用法,包括数据库事务处理和书籍交易模型的实现。特别感谢AI资源网提供的课程下载支持。 ... [详细]
  • 本文探讨了在Lumen框架中实现自定义表单验证功能的方法与挑战。Lumen的表单验证机制默认返回无状态的JSON格式API响应,这给初学者带来了一定的难度。通过深入研究Validate类,作者分享了如何有效配置和使用自定义验证规则,以提升表单数据的准确性和安全性。 ... [详细]
  • 可转债数据智能抓取与分析平台优化
    本项目旨在优化可转债数据的智能抓取与分析平台。通过爬取集思录上的可转债信息(排除已发布赎回的债券),并结合安道全教授提出的三条安全线投资策略,新增了建仓线、加仓线和重仓线,以提供更精准的投资建议。 ... [详细]
author-avatar
手机用户2502917001
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有