The general way to specify a criterion on a field is as follows:
{"<field>" : {"<comparison operator>" : "<value>"}}
If the query applied is to a different domain, then field names must be pre-pended by a relation path to the primary domain.
For example:
//Find items whose "name" field matches the expression "*test.*" items.find({"name": {"$match" : "*test.*"}}) //Find items that have been downloaded over 5 times. //We need to include the "stat" specifier in "stat.downloads" since downloads is a field of the stat domain and not of the item domain. items.find({"stat.downloads":{"$gt":"5"}}) //Find items that have never been downloaded. Note that when specifying zero downloads we use "null" instead of 0. //We need to include the "stat" specifier in "stat.downloads" since downloads is a field of the stat domain and not of the item domain. items.find({"stat.downloads":{"$eq":null}}) //Find builds that use a dependency that is a snapshot builds.find({"module.dependency.item.name":{"$match":"*SNAPSHOT*"}})
Fields with "Zero" value in the stat domain
Note that when searching for items that have a "zero" value in the stat domain, you should search for null, not 0. For example, as shown above, when searching for items with zero downloads you specify "null" instead of 0.
Short notation for Field criteria
AQL supports a short notation for search criteria on fields.
An "equals" ("$eq") criterion on a field may be specified as follows:
{"<field>" : "<value>"}
Element | Description |
---|---|
Example | Find items whose "name" field equals "ant-1.9.4.jar" |
Regular notation |
|
Short notation |
|