0.5.7 • Published 11 years ago
mongo-query v0.5.7
mongo-query
Component that implements the complete MongoDB query JSON API to operate on individual documents.
Example
var query = require('mongo-query');
// our sample document
var obj = {
name: 'Tobi',
age: 8,
location: { country: 'Canada', zip: 123 }
likes: [{ id: 1, name: 'Food' }, { id: 2, name: 'Stuff' }]
};
// run an operation and get changes
var changes = query(obj, { $set: { 'location.country': 'US' } });Features
- Transactional. If an op fails, the others are rolled back.
- Precise modification logs. Ops return an array of
changeobjects.- Noops are excluded.
- Before/after values are provided.
- Whether the op triggered the creation of a new array.
- Error messages almost exactly match MongoDB's.
- Query support. Allows for support of the positional operator.
- Wide test coverage.
API
query(obj, filter, modifier, opts)
- Executes the
modifieronobjprovided they matchfilter. - Returns an array of change objects (see below). If the modifier does not alter the object the array will be empty.
- Options:
strictif true, only modifies iffilterhas a match (false).
query.filter(query)
Returns a Query object to perform tests on.
Example: query.filter({ a: { $gt: 3 } }).test({ a: 1 }). For the
complete filter API refer to
filtr.
query.get(obj, key)
Gets the key from the given obj, which can use dot
notation.
Example: query.get(obj, 'some.key').
query.set(obj, key, val)
Sets the key on obj with the given val. Key can use dot
notation.
change
All change objects contain:
key: the key that was affected. If the positional operator was used, the key is rewritten with dot notation (eg:comments.3.date).op: the type of operation that was performedDepending on the type of operation they can contain extra fields.
$set
valuethat we set
$inc
valuevalue that we increment by
$pop
valuevalue that was poppedshiftif true, it was a shift instead of a pop
$rename
valuenew name
$push
valuevalue that was pushed
$pushAll
valuearray of values that were pushed
$pull
valuearray of values that were pulled
$pullAll
valuearray of values that were pulled
$unset
value(undefined)
$addToSet
valuearray of values that were added