#1.find()
###and条件
sql:select * from table where _id="x" and name="y";
—>db.collection.find({'_id':'x','name':'y'})
###or条件
sql:select * from table where _id="x" or name="y;"
—>db.collection.find({ $or: [{'_id':'x'},{'name':'y'}] })
###比较符号
- (>) 大于 - $gt
- (<) 小于 - $lt
- (>=) 大于等于 - $gte
- (<= ) 小于等于 - $lte
sql:select * from table where age>18;
—>db.collection.find({ 'age': {$gt : 18}})
###KaTeX parse error: Expected '}', got 'EOF' at end of input: …find({ 'age': {in : [‘x’,‘y’]}})`
###联合使用
sql:select * from table where age>18 or age<20 and name='x' or nane='y';
—>
db.collection.find(
"$and":[
{"$or":[{"age":{$gt : 18}}, {"age":{$lt : 20}]},
{"$or":[{"name":"x"}, {"name":"y"}]}
]
)
#2.insert()或save()
db.collection.insert( {'age':NumberInt(18),'name':'aa'} )
注意:Insert和Save的区别是:如果插入的集合的“_id”值,在集合中已经存在,用Insert执行插入操作回报异常,已经存在"_id"的键。用Save如果系统中没有相同的"_id"就执行插入操作,有的话就执行覆盖掉原来的值。相当于修改操作。我这里就不做演示了。
#3.update
#实战案例
分组去重查询:
1.方法一
Array.prototype.distinct1 = function(){
var arr = this,
result = [],
i,
j,
len = arr.length;
for(i = 0; i < len; i++){
for(j = i + 1; j < len; j++){
if(arr[i] === arr[j]){
j = ++i;
}
}
result.push(arr[i]);
}
return result;
}
var result = [];
var i=0;
db.getCollection(‘table’).find({
$or: [
{“loginIp”: “x”}, {“loginIp”:“y”},{“loginIp”:“z”}
]
},{ “userId”: 1,_id:0}).forEach(function(x){
result.push(x.userId+0)
}
);
//result.distinct();
result.distinct1();
2.方法二
db.getCollection(‘table’).aggregate( [
{ KaTeX parse error: Expected '}', got 'EOF' at end of input: match: {or: [{“loginIp”: “x”}, {“loginIp”:“y”} ,{“loginIp”:“z”}]} },
{ KaTeX parse error: Expected '}', got 'EOF' at end of input: group: { _id: "userId"} }] ).forEach(function(x){
print(x._id)})