当前位置: 首页 > 知识库问答 >
问题:

节点。js MongoDb-随机获取n个文档

尉迟轶
2023-03-14

如何从MongoDB中的集合中随机获取单个文档。

我如何修复代码。

var MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
    if(err) throw err;

    var query = { };
    var total = db.collection('cities').count();
    var random = Math.floor(Math.random()*total);

    db.collection('cities').find({}).skip(random).limit(1).toArray(function (err, doc) {
        if(err) throw err;

        console.dir(doc);

        db.close();
    });
});

我收到错误:未定义不是函数

$ node afindone

c:\Users\Administrator\node_modules\mongodb\lib\mongodb\connection\base.js:245
        throw message;
              ^
TypeError: undefined is not a function
    at c:\Users\Administrator\node_modules\mongodb\lib\mongodb\collection\commands.js:52:5
    at c:\Users\Administrator\node_modules\mongodb\lib\mongodb\db.js:1131:7
    at c:\Users\Administrator\node_modules\mongodb\lib\mongodb\db.js:1847:9
    at Server.Base._callHandler (c:\Users\Administrator\node_modules\mongodb\lib\mongodb\connection\base.js:445:41)
    at c:\Users\Administrator\node_modules\mongodb\lib\mongodb\connection\server.js:478:18
    at MongoReply.parseBody (c:\Users\Administrator\node_modules\mongodb\lib\mongodb\responses\mongo_reply.js:68:5)
    at null.<anonymous> (c:\Users\Administrator\node_modules\mongodb\lib\mongodb\connection\server.js:436:20)
    at emit (events.js:95:17)
    at null.<anonymous> (c:\Users\Administrator\node_modules\mongodb\lib\mongodb\connection\connection_pool.js:201:13)
    at emit (events.js:98:17) 

--------------------------------------好的。我修复了----------------------------

var MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {

    if(err) throw err;

    var cities = db.collection('cities');
    var query = {};
    var cursor = cities.find(query);
    var total,random;

    cities.count(function(err, count) {     

        random = Math.floor(Math.random()*count);
        cursor.sort({_id : -1});
        cursor.skip(random);
        cursor.limit(1);

        cursor.each(function(err, doc) {
            if(err) throw err;
            if(doc == null) {
                return db.close();
            }
            console.dir(doc);
        });
    });
});

共有1个答案

池庆
2023-03-14

下面是如何获得随机n个mongodb文档的答案。MongoDB:如何在100个集合中找到10个随机文档?

创造魔法的行:db.products.aggregate([{$example:{size: 10}}]);

 类似资料:
  • 问题内容: 我不知道如何从条件实例中获取n个随机行: 那呢 我找不到使用Criteria API的任何文档 这是否意味着我应该改用HQL? 谢谢! 编辑:我通过以下方式获得行数: 如何获取索引介于0和max之间的n个随机行?再次感谢! 问题答案: 实际上,使用Criteria进行一些调整是可能的。方法如下: 任何Restrictions.sqlRestriction将添加关键字“和”;为了消除其影

  • 从 array 中获取 n 个唯一键随机元素。 使用Fisher-Yates算法 对数组进行打乱。 使用 Array.slice() 获取第一个 n 元素。 省略第二个参数,n 从数组中随机取得 1 个元素。 const sampleSize = ([...arr], n = 1) => { let m = arr.length; while (m) { const i = Mat

  • 问题内容: 我正在研究“如何从javascript中的数组随机访问元素”。我发现了许多与此有关的链接。 问题: 但是在这种情况下,我们只能从数组中选择一项,如果我们想要多个元素,那么我们将如何实现这一点,所以请仅从该语句中获取一个数组中的多个元素。 问题答案: 尝试以下无损快速功能:

  • 它给我所有的数据,但我只需要3个随机数据。我有谷歌关于获得随机N没有数据,但为什么不为我工作?

  • 问题内容: 我正在使用Selenium IDE进行一些Web应用程序测试,并希望引入一些随机性以扩展我们的测试。我当前正在使用Selenium ,在其中给它一个XPath表达式,它存储与之匹配的第一个元素(排序)。但是我不想存储第一个匹配项,我希望它随机选择一个子节点。 例如 选择此表的所有tr子级。 选择第一个tr(假设现在嵌套表) 选择第三个tr,依此类推。 是否有某种方法(完全在xpath中