> 数据库 > MongoDB >

mongoDB 原生查询语句

mongoDB 分页查询
        Query query = new Query();
        //设置起始数
        query.skip((pageNum - 1) * pageSize);
        //设置查询条数
        query.limit(pageSize);
        query.addCriteria(new Criteria().where("formId").is(formId));
        //查询当前页数据集合
        List<FormData> formDatas = mongoTemplate.find(query, FormData.class);
        
        
mongoDB 查询语句:
db.testMongo_t.find()//查询整个集合
db.testMongo_t.find({"status":{$in:[4,5,6,7]}})//单个条件查询
db.testMongo_t.find({"status":{$in:[4,5,6,7]},"name":"haiNun1"})//并且语句查询;
db.testMongo_t.find({//或语句查询
  $or:[
      {"status":{$in:[4,5,6,7]}},
      {"status":1},
      {"name":"haiNun1"}
      ]
  })
db.testMongo_t.find({//and 加上 or 一起查询
    "status":{$in:[4,5,6,7]},
    $or:[{"status":{$lt:6}},{"name":"haiNun"}]
    })
db.xx.find({},{"article.text":1}).sort({time:1})
db.yyy.aggregate([
    { $unwind: '$Articles' },
    {
        $project: {
            _id: 0,
            Author: 1,
            Title: '$Articles.Title',
            PostTime: '$Articles.PostTime'
        }
    },
    { $sort: { PostTime: -1 } }
]);

    
insert 语句:
db.testMongo_t.insertOne({"name":"lisha","gender":"f","weight":123,"height":170})
db.testMongo_t.insertMany([{"name":"lisha","gender":"f","weight":123,"height":170},{"name":"haiNun","gender":"f","weight":321,"height":120},{"name":"wagwei","gender":"m","weight":1223,"height":245}])


update语句:
db.testMongo_t.updateOne(//根据name修改status
    {
      "name":"lemin"
    },
    {
        $set:{
            "status":2
        }
    }
)
db.testMongo_t.updateOne(//根据name修改status,添加degree和修改时间
    {
      "name":"lisha"
    },
    {
        $set:{
            "status":3,
            "degree":1
        },
        $currentDate:{lastModified:true}
    }
)
db.testMongo_t.updateMany(//根据status批量修改;
    {
      "status":null
    },
    {
        $set:{
            "status":11,
            "degree":2
        },
        $currentDate:{lastModified:true}
    }
)
db.testMongo_t.updateMany(//按条件自增100,-100(自减)
    {"status":{$lt:6}},
    {$inc: {"status": 100},
    $currentDate:{lastModified:true}
    }
)
db.testMongo_t.updateMany(//按条件自增100,-100(自减)
    {"status":{$gt:100}},
    {$inc: {"status": -100},
    $currentDate:{lastModified:true}
    }
)


mongo删除语句:
db.testMongo_t.deleteMany({})//删除集合中的所有
db.testMongo_t.deleteMany({"status":2})//按条件删除集合中的元素
db.testMongo_t.deleteOne({"name":"lemin"})//按条件删除集合中的元素


repalce 语句:
db.testMongo_t.replaceOne(
    {
        "name":"lemin"
    },{
        "status":120
    }
)

其他操作语句
db.user.remove();//删除文档中的所有数据;集合,索引不会删除,速度慢;无法恢复
db.drop_collction("user").    //不能附带条件,//删除集合所有;
db.user.find_one();//同remove
db.user.findOne({"name":""});
db.user.find();//查询集合所有文档
db.user.find("userName":"joe","age":23);

db.user.find({},{"userName":1,"email":1});//指定返回的结果集只有id,userName和email字段;
db.user.find({},{"fatal_weakness":0});//指定返回结果没有fatal_weakness字段;也用以防止id返回
db.user.find({"age":{"$gte":18,"lt":32}})//范围查询
db.user.find({"userName":{"$ne":"joe"}})//不等于
db.user.find({"ticket_no":{"$in":[725,234,345]}});//集合内匹配
db.user.find({"ticket_no":{"$nin":[725,234,345]}});//非集合匹配

db.user.find({"$or":[{"ticketNo":645},{"winner":true}]})
db.user.find({"$or":[{"ticket_no":{"$in":[725,234,345]}},{"winner":true}]})
db.user.find({"id":{"$mod":[5,1]}})//查询id按照5取模余1的元素;
db.user.find({"id":{"$not":{"$mod":[5,1]}}})//查询id按照5取模非余1的元素;

db.user.update({},{"$inc":{"age":1},"$set":{"age":40}})//错误操作!!一个键不能对应多个修改器
db.user.find({"y":null})//查询y为空,或没有y 键的对象;
db.user.find({"y":{"$in":[null],"$exists":true}})//查询y为空的对象;

db.user.update({},{"$inc":{"x":1}}) //所有元素的x属性加1
db.user.update({"id":123},{"$set":{"name":"qwer"}});//增加/删除/修改键的时候使用$set修改器;"$addToSet"避免重复,不在才添加(可以在使用"$each"时,同时使用"$addToSet",以实现给数组中的每个元素添加元素,避免重复)
db.user.update({"id":123},{"$inc":{"score":100}});"$inc" 只用于数字增加;
db.user.update({"id":123},{"$push":{"comments":{xxxx}}});//没有直接添加;与update()比较太慢;
db.user.update({"id":123},{"$pull":{"comments":{xxxx}}});//删除所有匹配评论;
db.user.update({"id":123},{"$pop":{"comments":-1/1}})从数组头部删除/从数组尾部删除一个元素;
db.user.update({"id":123},{"$inc":{"comments.0.votes":1}})//将第一条comments的votes,加一;
db.user.update({"comments.author":"sam"},{"$set":{"comments.$.author":"jan"}})//修改comments数组中第一个匹配author=sam ,的元素,的author为jan
db.user.upsert({},{})
更新多个文档;
返回已更新文档;
db.user.find({"status":"ready"}).sort({"priority":-1}).limit(1);//查询分页排序
getLastError 检查程序是否执行成功;

db.runCommand({"findAndModify":"processes",
        "query":{"status":"READY"},
        "sort":{{"priority":-1}},
        "remove":true
}).value


(责任编辑:IT)