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

如何在MongoDB中找到有特定字段的集合?

韩宏朗
2023-03-14

这里是我尝试的代码,我成功地获得了所有集合的名称,但当我搜索特定的字段时,它不起作用,也没有给我任何错误。

    mongoose.connection.db.listCollections().toArray((error, collections) => {
        collections.forEach( (collection) => {
           var collectionName = mongoose.connection.db.collection(collection.name)
                var count = collectionName.find({ "duck_name": { $exists: true }}).count()
                    if ( count > 0 ){
                        console.log(collection.name)
                        }
                    })
                })

该代码没有错误,也没有警告。

共有1个答案

谭文林
2023-03-14

mongoose.connection返回本机mongodb连接,使用db.前缀所做的一切与直接在mongodb控制台上所做的一切相同。

因此,当您使用本机连接描述符时,不要等待mongoose采取同样的行动。

在本地处理集合时,必须理解find方法返回游标。

const db = mongoose.connection.db;
const collections = db.listCollections()

collections
  .toArray((error, collections) => {
    collections.foreach(async collection => {
      const query = {"duck_name": { $exists: true }};
      const count = await collection.find(query).count();
      if (count === 0) return;

      console.log('Found:', count, 'documents in collection:', collection.name);
      const cursor = await collection.find(query);
      while(await cursor.hasNext()) {
        const document = await cursor.next();
        console.log('document:', document._id);
      }
    })
  });   
const db = mongoose.connection.db;
const collections = db.listCollections()

collections
  .toArray((error, collections) => {
    collections.foreach(async collection => {
      const query = {"duck_name": { $exists: true }};
      const count = await collection.find(query).count();
      if (count === 0) return;

      console.log('Found:', count, 'documents in collection:', collection.name);
      const documents = await collection.find(query).toArray();
      for(const document of documents) {
        console.log('document:', document._id);
      }
    })
  });  
 类似资料:
  • 文档存在,但筛选时不匹配! 您好,我在我的项目中发现了一个新错误。我正在使用nodejs后端和mongodb数据库。我正在成功插入文档。但有一个特定领域(“proje\u ortagi”)让我感到困惑。因为当我将文档过滤为“\u id”字段时。所有文件都在响应。但当我将文档过滤为“proje\u ortagi”时,有些文档并不是响应。为什么会发生这种情况?我检查“proje\u ortagi”值的

  • 如何查询从mongodb MapReduce生成的集合中的特定字段? 要只检索输出集合中的lastname字段,应输入什么字段? 结果应为: {“lastname”:“Doe”} >版本() 版本:2.2.2 >db.test.save({first:“john”,last:“doe”}) >db.test.find() {“_id”:ObjectId(“50bc001A8E97247957C60

  • 本文向大家介绍MongoDB中如何使用特定字符串更新字段的所有值,包括了MongoDB中如何使用特定字符串更新字段的所有值的使用技巧和注意事项,需要的朋友参考一下 要更新所有值,请将update()与multi:true一起使用。  让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是更新字段“ SubjectName”的所有值的查询- 在f

  • 我在MonoDB集合中有100k个文档,有20k个文档/记录。我想查找该特定文档使用的内存。 请帮助我在MongoDB控制台中查找内存大小(MB)。

  • 本文向大家介绍MongoDB文档中如何检查特定字段是否存在,包括了MongoDB文档中如何检查特定字段是否存在的使用技巧和注意事项,需要的朋友参考一下 使用MongoDB $exists 检查特定字段是否存在。如果文档中不存在该字段,则需要使用find()显示相同的文档。 让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是获取不包含特定字段

  • 假设我有一个博客数据集,看起来像 在这里,每个文档代表一篇博客文章。每个博客帖子可以有多个评论,但只有一个我的一个用户。比如说,我必须找到某位作者的所有评论。对此有何疑问? 一种方法是释放评论,然后按comments.author分组,并推送comments.body。 然而,它可以做到没有聚合管道,只是通过使用查找?因为我认为我应该通过寻找来做到这一点。有人能帮我吗?