mirror of https://gitee.com/bigwinds/arangodb
90 lines
2.0 KiB
Markdown
90 lines
2.0 KiB
Markdown
|
|
|
|
@brief constructs a query-by-example for a collection
|
|
`collection.byExample(example)`
|
|
|
|
Fetches all documents from a collection that match the specified
|
|
example and returns a cursor.
|
|
|
|
You can use *toArray*, *next*, or *hasNext* to access the
|
|
result. The result can be limited using the *skip* and *limit*
|
|
operator.
|
|
|
|
An attribute name of the form *a.b* is interpreted as attribute path,
|
|
not as attribute. If you use
|
|
|
|
```json
|
|
{ "a": { "c": 1 } }
|
|
```
|
|
|
|
as example, then you will find all documents, such that the attribute
|
|
*a* contains a document of the form *{ "c": 1 }*. For example the document
|
|
|
|
```json
|
|
{ "a" : { "c" : 1 }, "b" : 1 }
|
|
```
|
|
|
|
will match, but the document
|
|
|
|
```json
|
|
{ "a" : { "c" : 1, "b" : 1 } }
|
|
```
|
|
|
|
will not.
|
|
|
|
However, if you use
|
|
|
|
```json
|
|
{ "a.c" : 1 }
|
|
```
|
|
|
|
then you will find all documents, which contain a sub-document in *a*
|
|
that has an attribute *c* of value *1*. Both the following documents
|
|
|
|
```json
|
|
{ "a" : { "c" : 1 }, "b" : 1 }
|
|
|
|
```
|
|
|
|
and
|
|
|
|
```json
|
|
{ "a" : { "c" : 1, "b" : 1 } }
|
|
```
|
|
|
|
will match.
|
|
|
|
`collection.byExample(path1, value1, ...)`
|
|
|
|
As alternative you can supply an array of paths and values.
|
|
|
|
@EXAMPLES
|
|
|
|
Use *toArray* to get all documents at once:
|
|
|
|
@EXAMPLE_ARANGOSH_OUTPUT{003_collectionByExample}
|
|
~ db._create("users");
|
|
db.users.save({ name: "Gerhard" });
|
|
db.users.save({ name: "Helmut" });
|
|
db.users.save({ name: "Angela" });
|
|
db.users.all().toArray();
|
|
db.users.byExample({ "_id" : "users/20" }).toArray();
|
|
db.users.byExample({ "name" : "Gerhard" }).toArray();
|
|
db.users.byExample({ "name" : "Helmut", "_id" : "users/15" }).toArray();
|
|
~ db._drop("users");
|
|
@END_EXAMPLE_ARANGOSH_OUTPUT
|
|
|
|
Use *next* to loop over all documents:
|
|
|
|
@EXAMPLE_ARANGOSH_OUTPUT{004_collectionByExampleNext}
|
|
~ db._create("users");
|
|
db.users.save({ name: "Gerhard" });
|
|
db.users.save({ name: "Helmut" });
|
|
db.users.save({ name: "Angela" });
|
|
var a = db.users.byExample( {"name" : "Angela" } );
|
|
while (a.hasNext()) print(a.next());
|
|
~ db._drop("users");
|
|
@END_EXAMPLE_ARANGOSH_OUTPUT
|
|
|
|
|