A search mixin for mangomodel
This is a mix in for Mango Model to assist searching mongo collections.
var MangoModel = ;var MangoModelSearch = ;// Create your modelvar Ants = MangoModel;// Mix in the search methodAnts;// or set some defaultsAnts;
$limit - Limit the number of results returned from a search. Default is 20
$sort - Specify the property and method to sort by. Syntax is property name followed by an optional comma and sort method. eg. "age,desc". Default is "created_at,desc"
$from - A data point to return results only after and including from that point. The property this data point refers to is determined by the sort option. eg. By defaut sort is sorting the created_at property in descending order. Therefore If you specify a from option it's value must be date and the query will return all results created less than and including the date provided in the from option.
$until - Similar to from but in reverse. Using the created_at example again. If a until is specified instead of from, it will return all results upto and including the value provided in the until option.
$count - Count will return the total number results this query would return. Ignores $limit and $sort options
// no optionsAnts;// With optionsAnts;// Using $from with sort in descending order. Assume the column friends is an integerAnts;// Using $from with sort in ascending order. Assume the column friends is an integerAnts;// Using $until with sort in descending order. Assume the column friends is an integerAnts;// Using $until with sort in ascending order. Assume the column friends is an integerAnts;
It is also possible search on any field. Any options provided that do not begin with a '$' will be considered property searches. eg
// no optionsAnts;
Just be aware searching on any property could result in significant performance impacts if the property being searched on is not indexed.
To do more complicated searches, such as wild cards, you can use regex. To use regex, make sure you begin your regex query with a /. eg
// no optionsAnts;Regex's should be avioded where ever possible. They come with a significant performance impact.