前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >ArangoDB文档操作

ArangoDB文档操作

作者头像
kongxx
发布于 2020-02-18 09:32:40
发布于 2020-02-18 09:32:40
91200
代码可运行
举报
运行总次数:0
代码可运行

通过ArangoDB提供的shell终端,我们可以执行很多文档集合操作,下面就看看一些常用的方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ arangosh --server.username root --server.password <password> --server.database mydb

127.0.0.1:8529@mydb> db.users.insert({ name: "user1", age: 10, sex: 1, address: {home: "home address", office: "office address"}});
127.0.0.1:8529@mydb> db.users.insert({ name: "user2", age: 20, sex: 1, address: {home: "home address", office: "office address"}});
127.0.0.1:8529@mydb> db.users.insert({ name: "user3", age: 30, sex: 1, address: {home: "home address", office: "office address"}});
127.0.0.1:8529@mydb> db.users.insert({ name: "user4", age: 40, sex: 0, address: {home: "home address", office: "office address"}});
127.0.0.1:8529@mydb> db.users.insert({ name: "user5", age: 50, sex: 0, address: {home: "home address", office: "office address"}});

127.0.0.1:8529@mydb> db.users.count();
5

all()方法

all()方法可以返回集合的所有文档对象,我们可以对其使用limit()等函数来限制返回结果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 返回所有文档
db.users.all().toArray();
...
# 返回前两条结果
db.users.all().limit(2).toArray();
...

any()方法

any()方法用来在集合中随机返回一个文档对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 随机返回一个文档对象
db.users.any().toArray();
...

byExample()方法

byExample()方法用来根据条件查询文档对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 查询name=user3的对象集合
127.0.0.1:8529@mydb> db.users.byExample({"name": "user3"}).toArray();

# 查询name=user3并且age=30的对象集合
127.0.0.1:8529@mydb> db.users.byExample({"name": "user3", "age": 30}).toArray();

查询结果也可以使用AQL来遍历

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1:8529@mydb> var it = db.users.byExample({"sex" : 1});
...
127.0.0.1:8529@mydb> while (it.hasNext()) print(it.next());
...

firstExample()方法

firstExample()方法用来返回查询结果中的第一个文档对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1:8529@mydb> db.users.firstExample("sex", 1);
...

document()方法

document()方法用来根据_id或_key查询文档对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 按 _id 查询
127.0.0.1:8529@mydb> db.users.document("users/16771");
...
127.0.0.1:8529@mydb> db.users.document({"_id": "users/16771"});
...

# 按 _key 查询
127.0.0.1:8529@mydb> db.users.document("16771");
...
127.0.0.1:8529@mydb> db.users.document({"_key": "16771"});
...

# 查询多个文档
127.0.0.1:8529@mydb> db.users.document(["users/16764", "users/16771"]);
...
127.0.0.1:8529@mydb> db.users.document(["16764", "16771"]);
...
127.0.0.1:8529@mydb> db.users.documents(["16764", "16771"]);
...

exists()方法

exists()方法用来判断文档是否存在,和document类似,可以按_id或_key来判断。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1:8529@mydb> db.users.exists("users/16771");
{ 
  "_id" : "users/16771", 
  "_key" : "16771", 
  "_rev" : "_Z8v3A76---" 
}
127.0.0.1:8529@mydb> db.users.exists("16771");
{ 
  "_id" : "users/16771", 
  "_key" : "16771", 
  "_rev" : "_Z8v3A76---" 
}
127.0.0.1:8529@mydb> db.users.exists("12345");
false

如果存在返回对象,如果不存在返回false。

insert()方法

前面造测试数据的时候已经使用,这里不再多说。

save()方法

前面造测试数据的时候已经使用,这里不再多说。

replace()方法

replace()方法用来替换已存在的文档对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1:8529@mydb> db.users.replace("users/16782", {name: "user5", age: 50, sex: 0, address: {home: "home address", office: "office address"}});
{ 
  "_id" : "users/16782", 
  "_key" : "16782", 
  "_rev" : "_Z86X57W--_", 
  "_oldRev" : "_Z86Xe1u--_" 
}

127.0.0.1:8529@mydb> db.users.replace("16782", {name: "user5", age: 50, sex: 0, address: {home: "home address", office: "office address"}});
{ 
  "_id" : "users/16782", 
  "_key" : "16782", 
  "_rev" : "_Z86YKTy--_", 
  "_oldRev" : "_Z86X57W--_" 
}

replace()方法也可以执行批量替换操作,语法如下:

  • collection.replace(selectorarray, dataarray)
  • collection.replace(selectorarray, dataarray, options)

update()方法

update()方法用来替换文档中的一些属性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1:8529@mydb> db.users.update("users/16782", {name: "user5", age: 55});
{ 
  "_id" : "users/16782", 
  "_key" : "16782", 
  "_rev" : "_Z86e5zy--_", 
  "_oldRev" : "_Z86ewLW--_" 
}

127.0.0.1:8529@mydb> db.users.update("16782", {address: {home: "new home address"}});
{ 
  "_id" : "users/16782", 
  "_key" : "16782", 
  "_rev" : "_Z86faPm--_", 
  "_oldRev" : "_Z86e5zy--_" 
}

remove()方法

remove()方法用来按_id删除文档对象,或者删除一个文档对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 按 _id 删除
127.0.0.1:8529@mydb> db.users.remove("users/16782");

# 按document删除
127.0.0.1:8529@mydb> d = db.users.document("users/16782")
127.0.0.1:8529@mydb> db.users.remove(d);

removeByKeys()方法

removeByKeys()方法用来按_key删除文档。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1:8529@mydb> db.users.removeByKeys(["16775", "19465"])
{ 
  "removed" : 2, 
  "ignored" : 0 
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ArangoDB Restful API
ArangoDB 除了提供 Web 和 shell 接口来管理数据库之外,还可以使用 Restful API 的方式来管理数据库。
kongxx
2020/02/18
1.1K0
ArangoDB集合操作
通常我们可以通过 ArangoDB 提供的 Web 接口来对 ArangoDB 进行监控和管理。但今天来看看怎样通过 arangosh 的方式来对数据库进行操作。
kongxx
2020/02/18
1.1K0
mongodb操作(概述以及相关的命令)
http://blog.csdn.net/ljfbest/article/details/11979609
bear_fish
2018/09/20
6280
MongoDB 学习笔记(原创)
MongoDB 学习笔记 mongodb 数据库 nosql 一、数据库的基本概念及操作 SQL术语/概念MongoDB术语/概念解释/说明databasedatabase数据库tablecollection数据库表/集合rowdocument数据记录行/文档columnfield数据字段/域indexindex索引tablejoins表连接,MongoDB不支持primary keyprimary key主键,MongoDB自动将_id字段设置为主键 创建数据库 > use mydb 查看当前连接的数据
marsggbo
2018/01/23
7270
CouchDB查询文档
在CouchDB中对文档的查询可以通过_find命令来实现,_find命令也需要使用POST方法请求,提交的数据是一个JSON对象。
kongxx
2020/02/18
1.6K0
CouchDB入门
在CentOS8上默认的yum源是没有couchdb包的,因此需要添加couchdb的yum源。创建一个新文件 /etc/yum.repos.d/bintray-apache-couchdb-rpm.repo,内容如下:
kongxx
2020/02/18
9940
python操作mongodb数据库
(6) $push: 和 $ pushAll 都是向数组属性添加元素。# 好像两者没啥区别
bear_fish
2018/09/20
1.8K0
使用Python操作ArangoDB
前面说过怎样使用 ArangoDB 的 Web,Shell 和 Restful API 来操作数据库,今天看一下怎样使用Python语言来操作ArangoDB数据库。
kongxx
2020/02/18
1.5K0
ArangoDB 系列(1) —— 初识 ArnagoDB
ArangoDB 社区版的下载地址: https://www.arangodb.com/download-major/ 这里我用的是 CentOS7 的操作系统
求和小熊猫
2022/05/07
2.1K0
大数据技术之_22_MongoDB学习_MongoDB 的简介、下载、安装、启动、配置和关闭 + MongoDB 的基本操作 + Mongoose + 使用 java 对 MongoDB 增删改查
  • 数据库是按照数据结构来组织、存储和管理数据的仓库。   • 我们的程序都是在内存中运行的,一旦程序运行结束或者计算机断电,程序运行中的数据都会丢失。   • 所以我们就需要将一些程序运行的数据持久化到硬盘之中,以确保数据的安全性。而数据库就是数据持久化的最佳选择。   • 说白了,数据库就是存储数据的仓库。
黑泽君
2019/05/15
18K0
如何在Ubuntu 14.04上安装和使用ArangoDB
ArangoDB是一个NoSQL数据库。它创建于2011年,当时已有许多NoSQL数据库,其目标是成为一个涵盖各种用例的综合数据库解决方案。
朝朝
2018/09/29
2.7K0
使用Java驱动操作ArangoDB
前面说过怎样使用 ArangoDB 的 Web,Shell 和 Restful API 来操作数据库,今天看一下怎样使用Java语言来操作ArangoDB数据库。
kongxx
2020/02/18
1.8K0
MongoDB操作&&注入漏洞&&未授权访问漏洞
注入不止有传统的SQL数据库,NoSQL型数据库也一样存在注入漏洞,在比赛中跟传统的注入相比也算新题型,不少同学可能还不太了解,本文向大家科普MongoDB数据库的常见操作以及攻击的方法——NoSQL注入和未授权访问
安恒网络空间安全讲武堂
2019/09/29
4.6K0
mongodb学习整理三,mongodb与MYSQL之间的联系。query与projection
mongodb学习整理三,mongodb与MYSQL之间的联系。query与projection,尤其在使用mongodb的IDE:NOSQL manager for mongodb 在mongodb中从集合中获得一条数据或者文档可以通过以下两个方法: find() findOne() find()是我们从数据库中查找数据使用最主要的方法。find()语法如下: db.[集合名].find( , ) 类比SQL语句,query就相当于我们SQL中的查询条件,projection就相当于SQL中
学到老
2018/03/19
1.3K0
mongodb学习整理三,mongodb与MYSQL之间的联系。query与projection
Python操作MongoDB
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
菲宇
2019/10/22
4890
【MongoDB】mongodb安装及常用操作命令
....................................................................................... 环境:centos7 Ip: 172.16.200.48 ..............................................................................................
用户5522200
2019/06/02
1.1K0
【原创】MongoDB之常见操作命令汇总
mongodb由 C++ 写就,其名字来自humongous这个单词的中间部分,从名字可见其野心所在就是海量数据的处理。关于它的一个最简洁描述为:scalable, high-performance, open source, schema-free, document-oriented database。MongoDB的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集两者的优势于一身。 安装及使用: 首先在Ubuntu上安装MongoDB
码神联盟
2018/04/02
1.1K0
mongoDB 文档插入
db.collection.insertOne(obj, ) 插入单个文档到一个集合(3.2版本有效),可选参数为w, wtimeout db.collection.insertMany( [objects], ) 插入多个文档到一个集合(3.2版本有效),可选参数为w, wtimeout db.collection.insert(obj) 传统的插入方式
Leshami
2018/08/13
9970
mongodb必会知识点
8.2 架构 在数据承载节点中,一个且只有一个成员被视为主节点,而其他节点则被视为辅助节点。节点接收所有 写入操作,一个副本集只能有一个主实例能够写入,主节点记录所有变更到它的记录 辅助节点复制主节点的 oplog 并将操作应用于数据集。 仲裁员不维护数据集,仲裁器的目的是通过响应其 他副本集成员的心跳和选择请求来维护副本集中的仲裁。 因为它们不存储数据集,所以仲裁器是提供副本集仲裁功能的一种好方法。 与具有数据集的完全功能副本集成员相比,仲裁器的资源成本更低,如果副本集的成员数为偶数,则添 加一个仲裁器以在初选中获得多数票。 当一个主服务器在超过配置的周期(默认为 10 秒)内未与该组的其他成员通信时,符合条件的辅助服 务器将要求选择将其自身指定为新的主服务器。集群试图完成新的初选并恢复正常操作。 8.3 搭建步骤 (1) 准备三台虚拟机服务器,并各自安装好 mongoDB 注:为了保证复制集中三个服务器之间正常连接,请保证三个服务器的防火墙都已关闭! 192.168.132:27017 192.168.133:27017 192.168.134:27017 (2) 修改 mongodb.conf 文件,添加 replSet 配置 ( 三台都需要修改成同一个名称 ) ,然后启动服务器 replSet=rep1 (3) 初始化复制集 登录任意一台执行初始化操作 说明 : _id 指复制集名称, members 指复制集服务器列表,数组中的 _id 是服务器唯一的 id,host 服务器主 机 ip # 复制集名称 rs.initiate({_id:'rep1',members:[{_id:1,host:'192.168.197.132:27017'}, {_id:2,host:'192.168.197.133:27017'},{_id:3,host:'192.168.197.134:27017'}]}) (4) 查看集群状态 (5) 测试 # 添加数据 db.users.insert({"name":"lisi","age":11}) # 查询数据 db.users.find() # 切换到从数据库查询数据 如果不允许查询,是因为默认情况下从数据库是不允许读写操作的,需要设置。 >rs.slaveOK() 执行该命令后可以查询数据 (6) 测试复制集主从节点故障转移功能 # 关闭主数据库 , 注意从数据库的变 >db.shutdownServer() (7) 主复制集添加仲裁者 (arbiter) 现在我们的环境是一主两从,仲裁者对偶数集群有效。需要停止一个从机,在主服务器中运行下面命令 在一主一从关系中,任意节点宕机都无法选举出主节点,无法提供写操作,此时需要加入仲裁者节点即 可。 rs.remove("ip: 端口号 ") // 删除从节点 在一主一从关系中,任意节点宕机都无法选举出主节点,无法提供写操作,此时需要加入仲裁者节点即 可。 rs.addArb("ip: 端口号 ")
编程张无忌
2021/01/26
1.4K0
mongodb必会知识点
pyMongo操作指南:增/删/改/查/合并/统计与数据处理
一文教你如何通过 Docker 快速搭建各种测试环境这篇超帅,教你阿里云服务器快速安装,redis、mysql、mongoDB、elesticsearch等,而且比较全,刚好满足最近笔者的所有需求。
悟乙己
2020/03/27
11.4K0
相关推荐
ArangoDB Restful API
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档