通過ArangoDB提供的shell終端,我們可以執行很多文檔集合操作,下面就看看一些常用的方法。
$ 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()等函數來限制返回結果。
# 返回所有文檔
db.users.all().toArray();
...
# 返回前兩條結果
db.users.all().limit(2).toArray();
...
any()方法
any()方法用來在集合中隨機返回一個文檔對象。
# 隨機返回一個文檔對象
db.users.any().toArray();
...
byExample()方法
byExample()方法用來根據條件查詢文檔對象。
# 查詢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來遍歷
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()方法用來返回查詢結果中的第一個文檔對象。
127.0.0.1:8529@mydb> db.users.firstExample("sex", 1);
...
document()方法
document()方法用來根據_id或_key查詢文檔對象。
# 按 _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來判斷。
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()方法用來替換已存在的文檔對象。
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()方法用來替換文檔中的一些屬性。
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刪除文檔對象,或者刪除一個文檔對象。
# 按 _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刪除文檔。
127.0.0.1:8529@mydb> db.users.removeByKeys(["16775", "19465"])
{
"removed" : 2,
"ignored" : 0
}