1 /* 2 * #%L 3 * MiscellaneousOperator.java - mongodb-async-driver - Allanbank Consulting, Inc. 4 * %% 5 * Copyright (C) 2011 - 2014 Allanbank Consulting, Inc. 6 * %% 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 * #L% 19 */ 20 21 package com.allanbank.mongodb.builder; 22 23 import com.allanbank.mongodb.Version; 24 25 /** 26 * MiscellaneousOperator provides the set of miscellaneous operators. 27 * 28 * @api.yes This enumeration is part of the driver's API. Public and protected 29 * members will be deprecated for at least 1 non-bugfix release 30 * (version numbers are <major>.<minor>.<bugfix>) 31 * before being removed or modified. 32 * @copyright 2012-2013, Allanbank Consulting, Inc., All Rights Reserved 33 */ 34 public enum MiscellaneousOperator implements Operator { 35 /** 36 * Operator to ensure that all values provided in the operand existing in 37 * the array field. 38 */ 39 ALL("$all"), 40 41 /** 42 * A pseudo-operator to add a comment to a query. 43 * 44 * @since MongoDB 2.2 45 */ 46 COMMENT("$comment", Version.VERSION_2_2), 47 48 /** Provides the ability to match an entire array element at once. */ 49 ELEMENT_MATCH("$elemMatch"), 50 51 /** Check to see if a field exists or not. */ 52 EXISTS("$exists"), 53 54 /** Checks if a value for a field is present in the operand array. */ 55 IN("$in"), 56 57 /** 58 * Performs a modulo operation on a field and is equivalent to the where 59 * statement <code>field % d == m</code>. 60 */ 61 MOD("$mod"), 62 63 /** Checks if a value for a field is not present in the operand array. */ 64 NIN("$nin"), 65 66 /** Test if a field matches a specified regular expression. */ 67 REG_EX("$regex"), 68 69 /** Compares the length of the array field. */ 70 SIZE("$size"), 71 72 /** 73 * Support for text searches. 74 * 75 * @since MongoDB 2.6 76 */ 77 TEXT("$text", Version.VERSION_2_6), 78 79 /** Check if a value's type matches the expected type. */ 80 TYPE("$type"), 81 82 /** Support for an ad-hoc JavaScript expression. */ 83 WHERE("$where"); 84 85 /** 86 * The modifier for the {@link #TEXT} operator to specify the language of 87 * the query terms. 88 * 89 * @since MongoDB 2.6 90 */ 91 public static final String LANGUAGE_MODIFIER = "$language"; 92 93 /** 94 * The modifier for the {@link #TEXT} operator to specify the the query 95 * terms. 96 * 97 * @since MongoDB 2.6 98 */ 99 public static final String SEARCH_MODIFIER = "$search"; 100 101 /** The operator's token to use when sending to the server. */ 102 private final String myToken; 103 104 /** The first MongoDB version to support the operator. */ 105 private final Version myVersion; 106 107 /** 108 * Creates a new MiscellaneousOperator. 109 * 110 * @param token 111 * The token to use when sending to the server. 112 */ 113 private MiscellaneousOperator(final String token) { 114 this(token, null); 115 } 116 117 /** 118 * Creates a new MiscellaneousOperator. 119 * 120 * @param token 121 * The token to use when sending to the server. 122 * @param version 123 * The first MongoDB version to support the operator. 124 */ 125 private MiscellaneousOperator(final String token, final Version version) { 126 myToken = token; 127 myVersion = version; 128 } 129 130 /** 131 * The token for the operator that can be sent to the server. 132 * 133 * @return The token for the operator. 134 */ 135 @Override 136 public String getToken() { 137 return myToken; 138 } 139 140 /** 141 * Returns the first MongoDB version to support the operator. 142 * 143 * @return The first MongoDB version to support the operator. If 144 * <code>null</code> then the version is not known and can be 145 * assumed to be all currently supported versions. 146 */ 147 @Override 148 public Version getVersion() { 149 return myVersion; 150 } 151 152 }