Mongodb的查询语句与sql语句比较

#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)})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值