精华内容
下载资源
问答
  • MongoDB查询

    万次阅读 2018-08-18 00:01:37
    MongoDB查询 查询指定集合的所有文档 db.集合名称.find() 根据条件查询 db.集合名称.find({“属性1” : “值1”, “属性2” : “值2”}) 模糊查询,使用正则表达式 返回指定的键值 db.集合名称....

    MongoDB查询

    查询指定集合的所有文档

    db.集合名称.find()

     

    根据条件查询

    db.集合名称.find({“属性1” : “值1”, “属性2” : “值2”})

     

    模糊查询,使用正则表达式

     

    返回指定的键值

    db.集合名称.find({“查询条件1”: “值1”}, {“属性1” : 1, “属性2” : 1}),第二个参数,属性1的值为1,表示需要显示这个值。如果为0,表示不显示这个值,注意不要1和0混合使用。

     

    范围查询,大于$gt,大于等于$gte,小于$lt,小于等于$lte

    db.集合名称.({“属性1” : {“$gte” : 18, “$lte” : 30}})

     

    不等于查询$ne

    db.集合名称.find(“name” : {$ne : “rose”})

     

    多个值匹配$in

     

    多个值不匹配$nin

     

    Null

    这样的查询是没有效果的

    $exists:true,确定存在该键。$in:[null],值为null

     

    查询数组

    这样查询,整个匹配的数据才返回。

    $all只要一个匹配就返回

    查询指定的长度,只有长度是2的才返回。

     

    Limit,返回指定的条数

     

    Skip跳过前面多少条数据

     

    Sort排序,1正序,-1倒序

     

    布尔值运算

    $ne在上面已经有案例,这里不多介绍

     

    $not条件取反

    如果是mysql的语句,可以理解为查询NULL的值,我们使用IS NULL 和NOT IS NULL来表示数据库的值是否为NULL,$not效果是一样的

    $lte查询小于等于19岁的,但是使用了$not就表示查询大于19岁的用户。

     

    $or或者查询

    只要数组中的一个条件满足就可以了,由于比较简单,这里给案例就好了。$nor就是$or的相反而已,所有条件都不匹配,您可以自己尝试去写一下查询条件。

     

    $and一致查询,这个就是全部条件都要满足才可以返回数据

     

    $exists,判断属性是否存在

    查询用户存在emails属性的用户,即使是null也可以

     

    $where,javascript查询运算符

    通常,可能我们的查询语句非常复杂,这样无法满足我们的要求的时候,可以自定义javascript函数来作为查询

    例如,我们要查询明年年龄是19岁的用户,那么就可以使用函数,将年龄 + 1 == 19

     

    $slice选择返回文档的子集

    例如用户的爱好有很多,但是只需要返回前面的2个即可。

    或者需要返回第二和第三个爱好,slice有2个参数。

    返回最后2个爱好,使用负数

    关注微信公众号(程序员小兔)不定期分享技术

    展开全文
  • MongoDB 查询条件

    千次阅读 2012-03-20 12:46:41
    查询(来源于mongodb权威指南)http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24ne Advanced Queries .spacetree * ul{ padding-left:0px; margin-left: 0px; } .spacetree * li{ ...
    查询(来源于mongodb权威指南)
    http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24ne
    
    Advanced Queries

    and
    find({key:value,key:value})
    指定返回的键
    find({},{key:1,key:0})

    查询条件
    $lt<
    $lte <=
    $gt >
    $gte >=


    find({key:{$get:18,$lte:30}})

    $in 可以用来查询一个键的多个值。
    $nin 将返回与数组中所有条件都不匹配的文档。
    find({key:{$in:[18,30]}})

    $ne:不等于,或不在数组中
    ffind({key:{&ne:value}})


    $or更通用一些,用来完成多个键值的任意给定值。
    find({$or:[{key:value},{key:value}]})

    $not是元条件句,即可以用在任何其他条件之上。
    $mod会将查询的值除以第一个给定的值,若余数等于第二个给定值则返回该结果。
    fnd({key:{$not:{$mod:[5,1]}}})

    条件句规则
    条件句是内层文档的键,而修改器则是外层文档的键。
    一个键可以有多个条件,但是一个键不能对应多个更新修改器。

    null不仅匹配自身,而且匹配不存在的。所以这种匹配还会返回缺少这个键的所有文档。
    $exists判段键值已存在。
    find({key:{$in:[null],$exists:true}})

    数组

    $all 会匹配一组元素。
    要找既有apple,又有banana的文档,就得用$all来查询
    find({fruit:{$all:["apple","banana"]}})

    想查询数组指定位置的元素,则需要使用key.index语法指定下标
    find({key.2:value})

    $size 可以用其查询指定长度的数组。$size并不能与其他查询子句组合。
    find({key:{$size:3}})

    $slice find的第二个参数是可选的,可以指定返回那些键。$slice返回数组的一个子集合。
    findOne(条件,{key:{$slice:10}}) 返回数组的前10条记录
    findOne(条件,{key:{$slice:-10}}) 返回数组的后10条记录
    findOne(条件,{key:{$slice:[23,10]}}) 偏移值23开始的10条记录


    查询内嵌文档
    find({key.subkey:value,key.subkey:value})
    $elemMatch 将限定条件进行分组,仅当需要对一个内嵌文档的多个键操作时才会用到。
    find(key:{$elemMatch:{key:value,key:value}})

    $where 可以执行任意JavaScript作为查询的一部分。
    find($where:"this.x+this.y==10")

    find($where:"function(){return 1;}")


    Mongodb数据库操作语法

    db.AddUser(username,password)添加用户
    db.auth(usrename,password)设置数据库连接验证
    db.cloneDataBase(fromhost)从目标服务器克隆一个数据库
    db.commandHelp(name)返回某条操作命令的帮助
    db.copyDatabase(fromdb,todb,fromhost)复制数据库fromdb—源数据库名称,todb—目标数据库名称,fromhost—源数据库服务器地址
    db.createCollection(name,{size:3333,capped:333,max:88888})创建一个数据集,相当于一个表
    db.currentOp()取消当前库的当前操作
    db.dropDataBase()删除当前数据库
    db.eval(func,args)run code server-side
    db.getCollection(cname)取得一个数据集合,同用法:db['cname'] or db.cname
    db.getCollenctionNames()取得所有数据集合的名称列表
    db.getLastError()返回最后一个错误的提示消息
    db.getLastErrorObj()返回最后一个错误的对象
    db.getMongo()取得当前服务器的连接对象get the server connection object
    db.getMondo().setSlaveOk()allow this connection to read from then nonmaster membr of a replica pair
    db.getName()返回当操作数据库的名称
    db.getPrevError()返回上一个错误对象
    db.getProfilingLevel()?什么等级
    db.getReplicationInfo()?什么信息
    db.getSisterDB(name)get the db at the same server as this onew
    db.killOp()停止(杀死)在当前库的当前操作
    db.printCollectionStats()返回当前库的数据集状态
    db.printReplicationInfo() 
    db.printSlaveReplicationInfo() 
    db.printShardingStatus()返回当前数据库是否为共享数据库
    db.removeUser(username)删除用户
    db.repairDatabase()修复当前数据库
    db.resetError()error
    db.runCommand(cmdObj)run a database command. if cmdObj is a string, turns it into {cmdObj:1}
    db.setProfilingLevel(level)0=off,1=slow,2=all
    db.shutdownServer()关闭当前服务程序
    db.version()返回当前程序的版本信息
    数据集(表)操作语法数据集(表)操作语法
    db.linlin.find({id:10})返回linlin数据集ID=10的数据集
    db.linlin.find({id:10}).count()返回linlin数据集ID=10的数据总数
    db.linlin.find({id:10}).limit(2)返回linlin数据集ID=10的数据集从第二条开始的数据集
    db.linlin.find({id:10}).skip(8)返回linlin数据集ID=10的数据集从0到第八条的数据集
    db.linlin.find({id:10}).limit(2).skip(8)返回linlin数据集ID=1=的数据集从第二条到第八条的数据
    db.linlin.find({id:10}).sort()返回linlin数据集ID=10的排序数据集
    db.linlin.findOne([query])返回符合条件的一条数据
    db.linlin.getDB()返回此数据集所属的数据库名称
    db.linlin.getIndexes()返回些数据集的索引信息
    db.linlin.group({key:…,initial:…,reduce:…[,cond:...]}) 
    db.linlin.mapReduce(mayFunction,reduceFunction,<optional params>) 
    db.linlin.remove(query)在数据集中删除一条数据
    db.linlin.renameCollection(newName)重命名些数据集名称
    db.linlin.save(obj)往数据集中插入一条数据
    db.linlin.stats()返回此数据集的状态
    db.linlin.storageSize()返回此数据集的存储大小
    db.linlin.totalIndexSize()返回此数据集的索引文件大小
    db.linlin.totalSize()返回些数据集的总大小
    db.linlin.update(query,object[,upsert_bool])在此数据集中更新一条数据
    db.linlin.validate()验证此数据集
    db.linlin.getShardVersion()返回数据集共享版本号
    db.linlin.find({‘name’:'foobar’})select * from linlin where name=’foobar’
    db.linlin.find()select * from linlin
    db.linlin.find({‘ID’:10}).count()select count(*) from linlin where
    db.linlin.find().skip(10).limit(20)从查询结果的第十条开始读20条数据
    select * from linlin limit 10,20———-mysql 
    db.linlin.find({‘ID’:{$in:[25,35,45]}})select * from linlin where ID in (25,35,45)
    db.linlin.find().sort({‘ID’:-1})select * from linlin order by ID desc
    db.linlin.distinct(‘name’,{‘ID’:{$lt:20}})select distinct(name) from linlin where ID<20
      
    db.linlin.group({key:{‘name’:true},cond:{‘name’:'foo’},reduce:function(obj,prev){prev.msum=obj.marks;},initial:{msum:0}})select name,sum(marks) from linlin group by name
    db.linlin.find(‘this.ID<20′,{name:1})select name from linlin where ID<20
    db.linlin.insert({‘name’:'foobar’,'age’:25})insert into linlin (‘name’,'age’) values(‘foobar’,25)
    db.linlin.remove({})delete * from linlin
    db.linlin.remove({‘age’:20})delete linlin where age=20
    db.linlin.remove({‘age’:{$lt:20}})delete linlin where age<20
    db.linlin.remove({‘age’:{$lte:20}})delete linlin where age<=20
    db.linlin.remove({‘age’:{$gt:20}})delete linlin where age>20
    db.linlin.remove({‘age’:{$gte:20}})delete linlin where age>=20
    db.linlin.remove({‘age’:{$ne:20}})delete linlin where age!=20
    db.linlin.update({‘name’:'foobar’},{$set:{‘age’:36}})update linlin set age=36 where name=’foobar’
    db.linlin.update({‘name’:'foobar’},{$inc:{‘age’:3}})update linlin set age=age+3 where name=’foobar’

    展开全文
  • mongoDB查询某个经纬度附近的用户

    千次阅读 2016-12-02 16:55:49
    需求:获取某个点100m内的用户 数据库:mongoDB 语言:JAVA 1.地理位置数据以GeoJSON 的格式存储的loc : { type : "Point", coordinates : [lng, lat] }查询地理位置用到geoWithin,可以查询多边形的地理位置...

    需求:获取某个点100m内的用户
    数据库:mongoDB
    语言:JAVA
    1.地理位置数据以GeoJSON 的格式存储的

    loc : {
        type : "Point",
        coordinates : [lng, lat]
    }

    查询地理位置用到 geoWithin centerSphere, 查询语句为

    {
       location field: {
          $geoWithin: { $centerSphere: [ [ x, y ], radius] }
       }
    }

    x,y为中心点的经纬度,radius为距离中心点的距离,$centerSphere 使用弧度(radians)作为距离
    距离与弧度之间的转换:
    distance to radians: divide the distance by the radius of the sphere (e.g. the Earth) in the same units as the distance measurement.
    radians to distance: multiply the radian measure by the radius of the sphere (e.g. the Earth) in the units system that you want to convert the distance to.
    地球赤道的半径为3963.2 miles, 即 6378.1 kilometers, 只查找100m范围内,则radius为100/6378100。
    参考信息:
    geowithin
    centerSphere
    calculate distances

    Coordinates中数据类似如下:

    {
        "_id" : ObjectId("58403433785509513efe3279"),
        "account" : "18520222222",
        "platform" : "android",
        "location" : {
            "type" : "Point",
            "coordinates" : [ 
                108.840974298098, 
                34.2789316522934
            ]
        },    
        "collectTime" : 1480602671,
        "logTime" : 1480602675
    }

    JAVA代码,此处只写了unit test, 简单测试代码逻辑。实际使用需要做相应改动。

    package mongo;
    
    import java.net.UnknownHostException;
    import java.util.ArrayList;
    import java.util.HashSet;
    import java.util.List;
    
    
    import org.bson.Document;
    import org.junit.Before;
    import org.junit.Test;
    
    import com.mongodb.BasicDBList;
    import com.mongodb.BasicDBObject;
    import com.mongodb.MongoClient;
    import com.mongodb.MongoClientOptions;
    import com.mongodb.MongoCredential;
    import com.mongodb.MongoException;
    import com.mongodb.ServerAddress;
    import com.mongodb.client.MongoCursor;
    import com.mongodb.client.MongoDatabase;
    
    
    public class CoordinatesTest {
    
        public static final String mgoHost = "127.0.0.1:27017";
        public static final String mgoUser = "test";
        public static final String mgoPwd = "123456";
        public static final String mgoDB = "info";  
    
        private static MongoDatabase db = null;     
    
        @SuppressWarnings("resource")
        public void initMongo() throws UnknownHostException, MongoException {
            MongoClientOptions.Builder build = new MongoClientOptions.Builder();
            build.connectionsPerHost(50);
            build.threadsAllowedToBlockForConnectionMultiplier(50);
            build.maxWaitTime(1000*60*2);
            build.connectTimeout(1000*30);
            build.socketTimeout(1000*30);
    
            List<ServerAddress> seeds = new ArrayList<ServerAddress>();
            seeds.add(new ServerAddress(mgoHost));
            MongoCredential credentials = MongoCredential.createScramSha1Credential(mgoUser, mgoDB, mgoPwd.toCharArray());
            List<MongoCredential> credentialsList = new ArrayList<MongoCredential>();
            credentialsList.add(credentials);
            MongoClient mongoClient = new MongoClient(seeds, credentialsList, build.build());
            db = mongoClient.getDatabase(mgoDB);
        }
    
    
        public static List<String> distinct(String coll, BasicDBObject query, String key) {        
            List<String> list = new ArrayList<String>();
            MongoCursor<Document> cursor = null;
            try {
                cursor = db.getCollection(coll).find(query).projection(new BasicDBObject(key, 1)).iterator();
                if (cursor != null) {
                    HashSet<String> set = new HashSet<String>();
                    while (cursor.hasNext()){
                        Document doc = cursor.next();
                        String val = doc.getString(key);
                        if (!set.contains(val)) {
                            set.add(val);
                        }
                    }
                    list.addAll(set);
                }
            } catch (Throwable e) {
                System.err.println("coll:"+coll+", query:"+query+", key:"+key+", occur exception: " + e.getMessage());
            } finally {
                if (cursor != null) {
                    cursor.close();
                }
            }
            return list;
        }
    
        public static List<String> getAccountsByLocation(double longitude, double latitude, double radius) {
            BasicDBList point = new BasicDBList();
            point.add(longitude);
            point.add(latitude);
            Double distance = radius/6378100;
            BasicDBList centerSphere = new BasicDBList();
            centerSphere.add(point);
            centerSphere.add(distance);
            BasicDBObject location = new BasicDBObject("$geoWithin", new BasicDBObject("$centerSphere", centerSphere));
            BasicDBObject query = new BasicDBObject("location", location);
    
            List<String> list = new ArrayList<String>();
            try {
                list = CoordinatesTest.distinct("Coordinates", query, "account");
            } catch (MongoException e) {
                System.err.println(e.getMessage());
            }
            return list;
        }
    
    
        @Before
        public void init() throws Exception {
            initMongo();
        }
    
        @Test
        public void test1() {
            List<String> accountList = getAccountsByLocation(113.941892, 22.50986, 100);
            System.out.println(accountList);
        }
    }
    展开全文
  • Mongodb 查询指定时间范围的数据

    千次阅读 2019-12-15 09:45:42
    今天用mongodb查昨天某个collection产生的记录数量,在mysql里面可以用between..and..或者 >、>=、<、<=来查询指定的时间范围数据,但是mongodb有自己的语法。mongodb里比较,用 "$gt" 、"$gte"、 "$lt...

    今天用mongodb查昨天某个collection产生的记录数量,在mysql里面可以用between..and..或者 >、>=、<、<=来查询指定的时间范围数据,但是mongodb有自己的语法。mongodb里比较,用 "$gt" 、"$gte"、 "$lt"、 "$lte"(分别对应">"、 ">=" 、"<" 、"<="),组合起来可以进行范围的查找。比如查昨天的,就可以用:

    db.CollectionAAA.find({ "CreateTime" : { "$gte" : ISODate("2017-04-20T00:00:00Z")
    , "$lt" : ISODate("2017-04-21T00:00:00Z") } }).count()

    注意,开始的时候日期使用 "2017-04-20" 和"2017-04-21",但是返回结果为空,应该日期字段需要指定格式吧,看了下存在库里的数据为ISODate类型,所以直接写成ISODate的方式,结果就正常了。

    ps:

    你好,我想请教一下,用户前端传递过来的值是例如 2018-10-27 12:12:12 那这样子的话,我后端需要怎么转成ISODate格式呢?因为ISODate 中间还有一个T 后面有一个Z 是不是我直接截取加上就可以呢?还是由什么更加好的方法呢?

    直接这样就可以: 

    "ArtShowtime":{ "$gte":ISODate("2019-11-04 00:00:00"), "$lt":ISODate("2019-11-11 00:00:00") }


    ————————————————
    原文链接:https://blog.csdn.net/difffate/article/details/70312894

    展开全文
  • MongoDB查询条件 lt lte gt gte
  • mongodb查询分页优化

    千次阅读 2013-09-09 13:55:27
     当然,当用户输入跳转的时候同样的逻辑,比如当前页还是取第五页为例,此时用户要跳转到第100页,那么此时limit=1000,取最后10条显示即可 由于每页显示10条数据,需要从查询的结果中获取10条,所以while循环...
  • MongoDB创建用户

    千次阅读 2018-11-22 11:24:10
    MongoDB创建用户,为了MongoDB数据库的安全性,我们必须要从两个方面去考虑; 第一:给Mongodb数据库的配置里面,绑定IP;我们只允许某一台服务器才能够访问我们的数据库; 第二:给我们的MongoDB数据库创建用户名和...
  • MongoDb 关联查询

    千次阅读 2018-06-10 21:53:43
    刚接触MongoDB,有个需求是进行两张表的关联查询的。需求:把订单表(PrepurchaseOrder)和用户表(User)通过邮箱(emaiL)进行关联,查找订单用户对应的钱包地址。订单表结构如下:{ "email" : "...
  • java 操作mongodb查询条件设置

    千次阅读 2018-03-06 10:16:00
    java操作mongodb进行查询,常用筛选条件的设置如下:条件列表:BasicDBList condList = new BasicDBList();临时条件对象:BasicDBObject cond = null;DBCollection coll = db.getCollection("A");1、$...
  • MongoDB用户与权限管理1.Mongodb 用户权限列表2.MongoDB 用户使用2.1 创建 DB 管理用户2.1.1 切换到 Admin 库2.1.2 查看 admin 中的用户2.1.3 db.createUser 函数2.1.4 创建管理员用户2.1.5 重启 MongoDB2.1.6 ...
  • 配置中心的请求分为两种,一种是全局统一数据,通过用户的不同APP版本,IMEI等信息范围相应数据的灰度版本控制,或者APP配置信息等数据,一种是用户相关,每个用户各自读写信息的数据。 前一种数据使用的是缓存...
  • MongoDB之聚合查询

    千次阅读 2018-08-26 15:12:29
    MongoDB之聚合查询 MongoDB普通查询播客:https://blog.csdn.net/sinat_32366329/article/details/81784562 聚合框架是MongoDB的高级查询语言,允许我们通过转化合并由多个文档的数据来生成新的在单个文档里不存在...
  • MongoDB查询分组并获取TopN数据

    千次阅读 2020-11-18 22:41:59
    MongoDB中使用$group、$project等运算符实现分组并获取各分组中Top N个元素。
  • MongoDB 数据查询操作

    千次阅读 2019-03-07 17:15:48
    MongoDB 查询操作 实例 简介 find() 以及投影操作 关系运算查询(大于、小于、等于...) 模糊查询 范围查询($in,$nin) 逻辑运算查询(或者 $or、等于 $and、非或者 $nor 以及 $not) 存在查询(存在 $...
  • Mongodb联合查询

    2016-06-30 10:04:36
    而非关系型数据库的特点是表之间属于弱关联,Mongodb作为Nosql代表,其本身特性不建议对多Collection关联处理,不过对于有些需要对多表关联处理的需求,Mongodb也可以实现。主要分为两种方式:简单手工关联和DBRef...
  • mongodb查询分页优化(二)

    万次阅读 2013-09-14 08:49:34
    项目中需要用mongodb来进行数据测存储和查询,其中涉及到分页:分页的要求如下 1)每页显示10条 由于数据量太大,cursor.count()获取的符合条件的数据量也很大,导致分页得分好几万页,同时在项目中用到了skip加limit的...
  • Prometheus MongoDB查询导出器 ...对于kubernetes用户MongoDB查询导出器有一个正式的Helm图表。 请在阅读安装说明。 用法 $ mongodb_query_exporter 使用-help标志可获取帮助信息。 如果您使用MongoDB Authoriza
  • mongodb查询计划(explain)分析

    千次阅读 2017-03-01 16:38:05
    环境mongodb:3.4 robomongo:1.0.RC1explain 返回的数据执行的语句:db.urlcontents.find({ir_urltitle:{$regex:"科技"}, ir_groupname:"产业热点" }).sort({ir_urltime:-1}).explain("queryPlanner")结果为:{ ...
  • MongoDB聚合查询示例

    千次阅读 2018-04-11 14:56:29
    MongoDB聚合查询示例目的:统计book_order表的每个用户的order总数(total),以及失效的数量(invalid)查询用户的信息DBRef(java代码中有查询,使用DBRef查询)mongodb语法示例:aggregate会一层一层查询db.book_...
  • java 操作mongodb查询条件的常用设置

    万次阅读 2013-03-28 13:41:00
    java操作mongodb进行查询,常用筛选条件的设置如下: 条件列表: BasicDBList condList = new BasicDBList(); 临时条件对象: BasicDBObject cond = null; DBCollection coll = db.getCollection("A"); 1、$...
  • 今天一个现场运维部署群里面发现一些应用日志报错,如图: 那个项目的负责人当时有其他事,就@我帮忙解决一下。...我好久没有看MongoDB的东西了,MongoDB的内置角色权限细节已经记不清了,所以看到群里他发出来的授...
  • 这在构建API并接受各种用户特定的查询时很有用。 产品特点 别名查询参数 黑名单查询参数 白名单查询参数 基本运算符 $eq $gt $gte $lt $lte $ne $in $nin $exists $regex 解析字符串整数并浮点为数字 将...
  • MongoDB 慢查询优化

    2020-11-18 16:09:26
    一、MongoDB 慢查询(Profiling)级别说明 0:关闭,不收集任何慢查询数据,默认为0 1:收集慢查询数据,默认是100毫秒 2:收集所有数据 1、开启和设置慢查询 ① 修改配置文件(mongo.conf)开启Profiling #开启慢查询...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,230
精华内容 24,492
关键字:

mongodb查用户