#mango #couch-db #nosql #client-side

mango_smoothie

CouchDB Mango/Cloudant 查询的客户端库

4 个版本

使用旧的 Rust 2015

0.2.0 2017年2月5日
0.1.2 2016年11月25日
0.1.1 2016年11月25日
0.1.0 2016年11月24日

#7 in #mango

MIT 许可证

595KB
264

包含 (WOFF 字体,120KB) docs/Heuristica-Italic.woff,(WOFF 字体,90KB) docs/FiraSans-Medium.woff,(WOFF 字体,92KB) docs/FiraSans-Regular.woff,(WOFF 字体,56KB) docs/SourceCodePro-Regular.woff,(WOFF 字体,56KB) docs/SourceCodePro-Semibold.woff,(WOFF 字体,49KB) docs/SourceSerifPro-Bold.woff

Mango Smoothie 构建状态

Rust 的 CouchDB Mango/Cloudant 查询客户端。它支持创建索引、列出索引和查询索引

(文档)http://garrensmith.com/mango_smoothie/

extern crate mango_smoothie;
use mango_smoothie::database;
#[macro_use]
extern crate serde_json;


let query_resp = db.query_index(json!({
                "selector": {
                    "diet": {
                        "$eq": "omnivore"
                    }
                },
                "fields": ["_id", "_rev", "name", "class", "diet"]
             }));

  let result = query_resp.unwrap();
  let doc = &result.docs[0];
  assert_eq!(doc.get("class").unwrap().as_str().unwrap(), "mammal");

许可证

芒果冰沙 使用 MIT 许可证。有关更多信息,请参阅 LICENSE 文件


lib.rs:

芒果冰沙 Mango Smoothie 是一个 CouchDB Mango / Cloudant Query 客户端库。

创建索引

要创建索引,首先指定 CouchDB/Cloudant 实例的 URL,然后指定要索引的字段。

extern crate mango_smoothie;
use mango_smoothie::{database};

let resp = database("http://tester:[email protected]:5984/animaldb").unwrap()
          .create_index(&["class", "name"]);

查看索引

要列出所有可用的索引,请执行以下操作

  let indexes = database("http://tester:[email protected]:5984/animaldb").unwrap()
              .list_indexes().unwrap();

  assert!(indexes.total_rows > 0);
  assert_eq!(indexes.indexes[0].name, "_all_docs".to_string());
  assert!(indexes.indexes[0].def.fields[0].contains_key(&"_id".to_string()));

查询索引

Mango Smoothie 使用 serde_json 宏来帮助查询索引。

extern crate mango_smoothie;
use mango_smoothie::{database};
#[macro_use]
extern crate serde_json;

let query = json!({
   "selector": {
      "_id": {
        "$gt": "1"
      }
    },
    "fields": ["_id", "name"],
    "skip": 3,
    "sort": [{"_id": "asc"}]
});

let query_resp = db.query_index(query).unwrap();
assert_eq!(result.docs.len(), 5);
let doc = &result.docs[0];
assert_eq!(doc.get("class").unwrap().as_str().unwrap(), "mammal");

依赖项

~8MB
~187K SLoC