ArangoDB文檔操作

通過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 
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章