agdb::DbError 和 agdb::QueryError 错误类型,以便使操作符。use agdb::Db;
use agdb::QueryBuilder;
use agdb::Comparison::Equal;
let mut db = Db::new("user_db.agdb")?;
db.exec_mut(&QueryBuilder::insert().nodes().aliases("users").query())?;
let users = db.exec_mut(&QueryBuilder::insert()
.nodes()
.values(vec![vec![("username", "Alice").into(), ("joined", 2023).into()],
vec![("username", "Bob").into(), ("joined", 2015).into()],
vec![("username", "John").into()]])
.query())?;
db.exec_mut(&QueryBuilder::insert().edges().from("users").to(&users).query())?;
user_db.agdb的数据库,其中包含一个简单的由4个节点组成的图形。第一个节点别名为users,然后通过边与Alice、Bob和John的3个用户节点连接到users节点。任意的用户名属性和稀疏连接属性被附加到用户节点上。可以通过它们的ID选择图元素(节点和边),以获取它们及其关联的数据(键值属性):let user_elements = db.exec(&QueryBuilder::select().ids(users).query())?;
println!("{:?}", user_elements);
// QueryResult {
// result: 3,
// elements: [
// DbElement { id: DbId(2), values: [DbKeyValue { key: String("username"), value: String("Alice") }, DbKeyValue { key: String("joined"), value: Int(2023) }] },
// DbElement { id: DbId(3), values: [DbKeyValue { key: String("username"), value: String("Bob") }, DbKeyValue { key: String("joined"), value: Int(2015) }] },
// DbElement { id: DbId(4), values: [DbKeyValue { key: String("username"), value: String("John") }] }
// ] }
let user = db.exec(&QueryBuilder::select()
.search(QueryBuilder::search()
.from("users")
.where_()
.key("username")
.value(Equal("John".into()))
.query())
.query())?;
println!("{:?}", user);
// QueryResult {
// result: 1,
// elements: [
// DbElement { id: DbId(4), values: [DbKeyValue { key: String("username"), value: String("John") }] }
// ] }

原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。