mongo 从 collection 中随机查询多条记录

mongodb随机获取一条记录实例 介绍php7.0以上使用mongdb的基本方法,并提供mongodb随机获取一条记录的测试实例。 立即下载

在项目中,需要从某个类集中【随机】抽取几条记录的需求。而 mongo 中是没有现成的实现方式的。

目前仅想到有 2 种方式:

  1. 在插入记录中,人为添加一个字段 random 字段。查询时使用 &gte 和 &lte 搭配使用查询出多条随机记录数
  2. 先使用 count 计算出总记录数,在使用随机的 skip 和 limit 搭配查询出多条随机记录数
  3. 好像可以使用地理索引,这方面没接触过,暂不考虑

显而易见的使用【方法一】是明智之选

double rand = Math.random();
        JSONObject query = new JSONObject();
        query.put("random", new BasicDBObject("$gte", rand));
        String fields = "{_id:0,letId:1,heroId:1,heroLevel:1}";
        String sort = "{heroLevel:1}";
        // 大于 随机值 条件查找记录
        {
            MongoCursor<JSONObject> mongoCursor = getJgCollection().find(query.toString()).limit(10).sort(sort).projection(fields).as(JSONObject.class);
            while (mongoCursor.hasNext()) {
                JSONObject temp = mongoCursor.next();
                array.add(temp);
            }
        }
        // 若未取得值,则用 小于 随机值 条件查找记录
        if (array.size() == 0) {
            query.remove("$gte");
            query.put("random", new BasicDBObject("$lte", rand));
            MongoCursor<JSONObject> mongoCursor = getJgCollection().find(query.toString()).limit(10).sort(sort).projection(fields).as(JSONObject.class);
            while (mongoCursor.hasNext()) {
                JSONObject temp = mongoCursor.next();
                array.add(temp);
            }
        }
mongodb 随机获取一条记录的方法 主要介绍了 mongodb 随机获取一条记录的方法的相关资料,需要的朋友可以参考下 立即下载

相关推荐

mongodb中随机获取1条记录的实现方法

运用实例给大家演示了如何在mongodb中随机获取1条记录,文中介绍的很详细,有需要的朋友们可以参考借鉴。下面来一起看看吧。

MongoDB随机获取表有的n条数据

db.user.aggregate( [ { $sample: { size: 10 } } ] ) 上面的命令可以随机返回集合user中的20条数据 使用MongoDB的aggregate聚合函数 + $sample表达式 db.collection_name.aggregate() $sample 表达式: 3.2+版本中新增,类似于大数据中的“数据采样”方式,从input中随机选择N条documents,语法“{$sample: {size: <N>}}”。如果N大于coll..

Fortuna_的博客 4377

CEH Practical 实战考试真题与答案

CEH Practical 是 EC-Council 推出的Certified Ethical Hacker(CEH)认证项目中的一项高级动手实践考试。它不同于传统的理论考试,侧重于在真实环境中检验考生的实操能力。

sgafdgdagd的博客 967

MongoDB随机查询

(2)随机数法:插入记录时生成一个随机数一并插入,取样时再生成一个随机数,先从文档中选出存储的随机数比该随机数大的指定数量的记录,如果取出的数量不够时再取出比该随机数小的记录补足。缺点是不够随机,每次取出的记录可能重复性较大。(1)聚合抽样:MongoDB的aggregate提供了sample阶段,可以从文档中取出指定记录,不过缺点是在数据量大的集合高频调用时可能会导致响应缓慢。一般情况下数据量不大的情况下用官方的方法一就足够了。不过如果是要随机取100条呢?

Gosick_Geass_Gate的博客 1056

关于深度可分离卷积

关于深度学习中的深度可分离卷积

qq_45670407的博客 1796

STM32项目分享:智能家居语音系统

(资料分享见文末)基于STM32的智能家居语音系统温湿度采集:系统通过DHT11模块采集温湿度烟雾监测:通过MQ-2模块采集环境中烟雾浓度光照强度采集:通过BH1750传感器采集环境光照强度窗帘控制:通过步进电机转动模拟窗帘控制风扇控制:通过继电器和指示灯模拟风扇驱动照明控制:通过继电器和指示灯模拟照明驱动蜂鸣器报警:环境烟雾异常情况下蜂鸣器报警OLED显示:显示温湿度、光照强度和烟雾浓度APP功能:使用机智云APP,包括功能有控制照明灯和风扇开关、显示当前温湿度信息。

qq_44016222的博客 4146

mongodb批量查询用例,附c++代码段

mongodb批量查询需要用in或者in或者in或者or, 同一个字段比如下面用例用批量graph_id推荐用in,查询速度更快.不同字段用in,查询速度更快. 不同字段用in,查询速度更快.不同字段用or 另外特征主要查询出来结果的顺序和输入id的顺序是不同的,需要自己在程序里面处理 mongo数据内容结构 { "_id" : ObjectId("5da034d607801c76ed49...

weixin_45415546的博客 722

[deprecated]第四章:TTM分析: 4.2.1 存储分配ttm_bo_validate功能实现分析

ttm_bo_validate是TTM框架中负责验证和调整BufferObject物理内存分配的核心函数,主要用于显存管理。该函数通过placement参数判断BO是否需要迁移或重新分配资源,完成内存分配、迁移及缓存策略调整等操作。实现流程包括资源释放、兼容性检查、迁移保护、新资源分配、迁移实现等步骤,支持多跳迁移和临时缓冲区。典型应用于显存溢出迁移、缓存策略调整、驱动初始化等场景,确保BO始终处于预期状态。

图形/计算GPU的驱动与虚拟化技术分享园地 839

MongoDB(四) 语法(高级查询)

一、分页查询 通过sort、limit、skip三个集合自带方法的配合,可以实现分页效果 var C //每页条数 var N //第几页 var pageN=db.collection.find().skip((N-1)*C).limit(C).sort(); 上面的分页查询方法使用了skip函数,skip函数在跳过较少文档时,速度还可以,但是当跳过的文档数较多时速度就会明显降低。此时可...

zw3413的专栏 610

Hermes 教程 03:Skills 系统

摘要:Hermes Skills是一种自我改进机制,可将解决问题的经验保存为可复用技能文档。v0.13.0版本遵循agentskills.io开放标准,与Claude Skills互通。技能创建流程包括发现问题、创建技能文件、加载使用和优化更新四个阶段。系统提供技能检索和自维护机制(Curator),支持技能媒体路由和多种管理命令。内置技能涵盖开发调试、创意头脑风暴等场景,通过积累技能使Hermes更适应用户需求。

程序猿_三产 727

手把手教你学Simulink——逆变器场景:基于PR控制器的单相逆变器并网控制策略仿真

摘要:本文详细介绍基于PR控制器的单相逆变器并网控制策略的Simulink仿真实现。首先分析PR控制器在单相逆变应用中的优势,然后逐步讲解模型搭建过程,包括主电路设计(直流电源、全桥逆变器、L滤波器)、控制回路实现(参考电流生成、坐标变换、PR控制器设计)以及关键参数设置。通过仿真验证了PR控制器对电网频率的精确跟踪能力,并网电流THD<3%。最后提出优化建议,如加入状态观测器、自适应参数整定等改进方向。该建模方法为可再生能源系统中的逆变器控制提供了有效验证手段。

MHD0815的博客 497

Java里操作mongoDB随机取N条数据

接了一个需求,要随机从MongoDB中选取一定数量的数据出来。 如果是sql的话,主键是自增的Int,可以先随机生成一个数,然后去找主键等于这个随机数的数据,就能实现随机查询。但是mongo中主键是自动生成的一串字符,没法根据主键查找。同时,把所有数据全部查出来,在list中再随机查找,如果数据量不大还行,数据量大这样太费时间了。 后来上网查询发现mongo中有聚合函数可以直接实现,在控制台的命令如下 随机查询10条数据 db.user.aggregate( [ { $sample: { size: 10

weixin_45614626的博客 1591

dolphinscheduler集群服务一键安装启动实现流程剖析

通过以上分析我们基本梳理清楚了整个dolphinscheduler项目的一键安装启动逻辑, 我们现在在通过一张图正好理一下整个实现流程。关于一键停止集群服务及一件查询集群各个角色服务实例运行状态的实现也都在stop-all.sh/status-all.sh及dolphinscheduler-daemon.sh这三个脚本中, 有兴趣自行研究。写这篇文章的核心目的不仅在于给大家分享如何优秀的开源项目的一键安装部署的实现过程。

最爱嫣夜来 1207

mongo查询语句,修改表collection字段,更新某个字段内容,删除一行记录

MongoDB AND 条件 以下实例通过 by 和 title 键来查询 菜鸟教程 中 MongoDB 教程 的数据 > db.col.find({"by":"菜鸟教程", "title":"MongoDB 教程"}).pretty() { "_id" : ObjectId("56063f17ade2f21f36b03133"), "title" : "Mo...

奔跑的菜鸡 2933

多模态论文笔记——CogVLM和CogVLM2

本文详细介绍LoRA版本的多模态模型——CogVLM和CogVLM2。在SD3中使用其作为captioner基准模型的原因和优势。

haopinglianlian的博客 2203

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

mongo-go-driver使用简介

本文系个人在真实项目中使用mongo-go-driver包的心得体会,如有不当之处,还望不吝赐教。 1. mongo-go-driver包的导入或安装 对于使用go modules来进行包管理的开发人员,可以通过从go.mongodb.org/mongo-driver导入包并让构建步骤来自动安装依赖包,或者通过显式运行以下命令来安装: go get go.mongodb.org/mongo-dri...

Bluejoy Jing 的博客 5311

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

在框架中整合了Mongo

以下记录一些开发心得 最初打算 使用框架把 MYSQL与MONGO进行封闭,对开发人员透明.

bluehire的专栏 487

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

mongo简介——查询

查询符合条件的第一个文档(对于mongo来说不能叫记录了) db.COLLECTION_NAME.findOne({},{});       查询符合条件的文档,并按照指定条件排序,跳过前面N1个文档,返回最多数量为N2的文档列表 sort skip limit三个函数可选 db.COLLECTION_NAME.find({},{}).sort({}).skip(N1).limit(N2

Stone的专栏 1万+

Meteor 3迁移必读:meteor-collection-hooks的find钩子为何不能异步?

在 Meteor 3 迁移过程中,很多开发者第一次接触 **meteor-collection-hooks** 这个为 Mongo.Collection 提供 before/after 钩子的经典包时,都会踩到同一个坑:`before.find` 钩子一写成 `async` 函数就立刻报错,而 `insert`、`update` 的钩子却都能用 `async`。为什么偏偏 find 不行?这篇文章

gitblog_00406的博客 888

mongo 慢查询配置

我是分片部署,所以慢查询相关的配置是在启动片服务上。 执行查询命令,是在share的primary 上。 1. mongodb慢查询 配置 慢查询数据主要存储在 local库的system.profile集合,该集合主要是一个capped collection。 开启方式两种: 第一种:片服务启动时加启动参数 相关参数如下:#-------------------------...

weixin_30632089的博客 133

mongo-c-driver MongoDB使用笔记

转自:mongo-c-driver MongoDB使用笔记_May的专栏-优快云博客 最近一个项目,使用了MongoDB,c 语言调用 mongo-c-driver 函数实现数据库的操作,网上资料较少,自己摸索总结了一些方法,做个记录。 一、查询 1、函数 mongoc_collection_find_with_opts 和 mongoc_collection_find 如果只有查询条件,没有输出条件,这两个函数都可使用;如果有输出条件,则使用mongoc_collection_...

1397

MongoDB java api for 插入和单collection基本查询使用示例

1.首先为我们要准备操作的数据库添加一个用户验证:   [root@localhost src]# mongo MongoDB shell version: 1.8.1 connecting to: test > show dbs; admin (empty) local (empty) > db test > db.addUser("iwtxokhtd","123456"); { "user" : "iwtxokhtd", "readOnl

5617

mongo 随笔1

P版云环境 自助mongo 数据库集群 sip_host01:PRIMARY> show dbs admin 0.000GB bk-cmdb-adapter 0.031GB config 0.000GB host-evacuation-service 0.000GB local ...

weixin_34082854的博客 147

Flutter中mongo_dart_query的鸿蒙适配与性能优化

MongoDB风格的查询语法为移动端数据处理提供了高效便捷的操作方式,其基于文档的查询原理特别适合处理半结构化数据。在Flutter生态中,mongo_dart_query库实现了这类查询能力,大幅提升了本地数据操作的开发效率。随着鸿蒙操作系统的普及,跨平台数据查询技术面临新的适配挑战,特别是在线程模型、内存管理和文件系统等方面。通过构建鸿蒙适配层并优化查询缓存机制,开发者可以在保持MongoDB查询语法的同时,实现鸿蒙平台上的高性能数据检索。这种技术方案特别适用于电商商品筛选、金融数据分析等需要复杂查询的

weixin_34130389的博客 396

meteor-collection-hooks教程:remove钩子实现级联删除的完整指南

Meteor Collection Hooks 是一个为 Meteor 的 Mongo.Collection 提供 `before`/`after` 钩子能力的开源库,而 **remove 钩子**(`before.remove` 与 `after.remove`)正是实现**级联删除**最优雅、最可靠的方案。本文将用最少的代码,带你从零掌握 remove 钩子的用法,并给出一个可直接落地的级联删

gitblog_01119的博客 284
上一篇: mongo 删除内嵌数组元素
下一篇: java 动态代理
从不喝茶
博客等级 码龄12年 10粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值