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

从Firestore中选择随机文档

景俊语
2023-03-14

例如:students是Firestore中的一个集合,我在该集合中有1000名学生,我的要求是在每次调用中随机选择10名学生。

共有1个答案

呼延智明
2023-03-14

根据Alex的回答,我得到了从Firebase Firestore数据库获取重复记录的提示(特别是对于少量数据)

我在他的问题中遇到了以下问题:

  • 它给出的所有记录与随机数未更新时相同。
  • 即使我们每次都更新randomnumber,最终列表中也可能有重复的记录。
  • 它可能有我们已经显示的重复记录。
    FirebaseFirestore database = FirebaseFirestore.getInstance();
    CollectionReference collection = database.collection(VIDEO_PATH);
    collection.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                List<VideoModel> videoModelList = new ArrayList<>();
                for (DocumentSnapshot document : Objects.requireNonNull(task.getResult())) {
                    VideoModel student = document.toObject(VideoModel.class);
                    videoModelList.add(student);
                }

                /* Get Size of Total Items */
                int size = videoModelList.size();
                /* Random Array List */
                ArrayList<VideoModel> randomVideoModels = new ArrayList<>();
                /* for-loop: It will loop all the data if you want 
                 * RANDOM + UNIQUE data.
                 * */
                for (int i = 0; i < size; i++) {
                    // Getting random number (inside loop just because every time we'll generate new number)
                    int randomNumber = new Random().nextInt(size);

                    VideoModel model = videoModelList.get(randomNumber);

                    // Check with current items whether its same or not
                    // It will helpful when you want to show related items excepting current item
                    if (!model.getTitle().equals(mTitle)) {
                        // Check whether current list is contains same item.
                        // May random number get similar again then its happens
                        if (!randomVideoModels.contains(model))
                            randomVideoModels.add(model);

                        // How many random items you want 
                        // I want 6 items so It will break loop if size will be 6.
                        if (randomVideoModels.size() == 6) break;
                    }
                }

                // Bind adapter
                if (randomVideoModels.size() > 0) {
                    adapter = new RelatedVideoAdapter(VideoPlayerActivity.this, randomVideoModels, VideoPlayerActivity.this);
                    binding.recyclerView.setAdapter(adapter);
                }
            } else {
                Log.d("TAG", "Error getting documents: ", task.getException());
            }
        }
    });
 类似资料:
  • 问题内容: 我正在尝试建立一个用户可以提交照片的网站,然后在另一个页面上一个一个地随机查看其他照片。我有一个名为“上传”的目录,其中提交了图片。我无法从文件中读取图片。我只想从目录上传中随机选择一张图片,并将其显示在页面上。任何建议表示赞赏。 问题答案: 您可以使用glob获取目录中的所有文件,然后从该数组中获取随机元素。这样的函数将为您完成此任务:

  • 问题内容: 我可以使用列出所有组合, 但这通常会很大。 给定和,我如何在不首先构建大量列表的情况下随机地均匀选择组合? 问题答案: 来自http://docs.python.org/2/library/itertools.html#recipes

  • 我试图开发一个刽子手作为作业,但无法从文本文件中随机获得一个单词(其中有各种单词,每个单词之间用空格分隔)。我编写了一个代码来获取一个随机单词,但无法选择一个单词并用示例字符串(string w=“this”)替换它我在“Function()”中找到了。

  • 问题内容: 我有两个相关的numpy数组和。我需要从中选择随机行,并将其存储在数组中,并将其对应的值附加到随机选择的点的索引上。 我有另一个数组,它存储我不想采样的索引列表。 我怎样才能做到这一点? 样本数据: 如果这些是随机选择的(其中): 所需的输出将是: 我怎样才能做到这一点? 问题答案: 您可以使用以下方法创建随机索引: 然后,您只需要使用结果索引数组:

  • 问题内容: 我正在使用PHP和MySQL创建一个简单的Web应用程序。在其中,我需要以随机顺序从表中随机选择一小组行。如何使用MySQL实现此类目标? 问题答案: SELECT * FROM table ORDER BY RAND() LIMIT 10;