当前位置: 首页 > 面试题库 >

MongoDB列出Go中具有给定前缀的数据库

齐驰
2023-03-14
问题内容

如何仅列出具有给定前缀(prefix_)的数据库?

例:

package main

import (
  "context"
  "fmt"
  "go.mongodb.org/mongo-driver/bson"
  "go.mongodb.org/mongo-driver/mongo"
  "go.mongodb.org/mongo-driver/mongo/options"
  "log"
)

type foo struct {
  Value string
}

func main() {
  clientOptions := options.Client().ApplyURI("mongodb://10.0.12.76:27018")
  client, err := mongo.Connect(context.TODO(), clientOptions)
  if err != nil {
    log.Fatal(err)
  }
  db := [3]string{"prefix_foo", "prefix_bar", "bar"}

  for _, element := range db {
    _, err := client.Database(element).Collection("placeholder").InsertOne(context.TODO(), foo{"sth"})
    if err != nil {
      log.Fatal(err)
    }
  }

  filter := bson.D{{}}

  dbs, err := client.ListDatabaseNames(context.TODO(), filter)
  if err != nil {
    log.Fatal(err)
  }
  fmt.Printf("%+v\n", dbs)
}

输出:

[admin bar config local prefix_bar prefix_foo]

预期产量:

[prefix_bar prefix_foo]

奖金:

  1. struct在我的情况下,可以在不定义new 的情况下创建数据库foo吗?
  2. 我的目标是仅在具有前缀的数据库上运行查询,所以可能存在比列出数据库更好的解决方案,然后在每个数据库上运行查询吗?

问题答案:

只需按name表示数据库名称的属性进行过滤。要列出以给定前缀开头的数据库,可以使用regexp为^prefix_

filter := bson.M{"name": primitive.Regex{Pattern: "^prefix_"}}

其他过滤器选项在listDatabases命令页面上列出:

您可以在以下输出的任何字段上指定条件listDatabases

  • name
  • sizeOnDisk
  • empty
  • shards

并且您可以使用空白bson.M{}插入空白文档(_id当然会添加)。



 类似资料:
  • 问题内容: 在MySql中,我想定位记录的位置,其中一列中的字符串值以查询字符串开头(或与查询字符串相同)。该列以适当的排序规则索引。但是,该列上没有全文本搜索索引。 一个好的解决方案将是: 使用列上的 索引 。需要遍历表中所有记录的解决方案还不够好(表中有几百万条记录) 使用具有 任何字符值的 字符串。一些列值包含标点符号。查询字符串可能也是如此。如果您的解决方案包含正则表达式字符或类似字符,请

  • 问题内容: 嗨,我有一个表测试,其结构如下: 现在,我需要查询该表(测试),以便获得以下输出。 Oracle 11g中的sql查询是否可以实现?11g中的PIVOT功能是否可以实现? 问题答案: 不,它不能用来完成,但是 可以 用来完成: 当不可用时,我通常会像这样取消透视:

  • 问题内容: 我正在编写一种算法,它将通过Java中所有可用的Mongo数据库。 在Windows Shell上,我只是做 如何在Java中执行此操作并获取所有可用数据库的列表? 问题答案: 您将这样做: 这只会为您提供所有可用数据库名称的列表。 您可以在此处查看文档。 更新: 就像下面提到的@CydrickT一样,它已被弃用,因此我们需要切换到:

  • 问题内容: 我试图在以下位置找到针对此问题的解决方案:http : //mongodb.github.io/node-mongodb-native/ 但是,我找不到从Node.js应用程序列出所有可用的MongoDB数据库的解决方案。 问题答案: 使用。

  • 给定一个大小为N的非负整数的未排序数组,找到一个与给定数S相加的连续子数组。 输入: 输入的第一行包含一个整数T,表示测试用例的数量。接下来是T测试用例。每个测试用例由两行组成。每个测试用例的第一行是N和S,其中N是数组的大小,S是和。每个测试用例的第二行包含N个表示数组元素的空格分隔整数。 输出: 对于每个测试用例,在新行中,如果sum等于子数组,则从左侧打印第一个出现子数组的开始和结束位置(1

  • 我有一个azure容器,其中包含按日期命名的目录(例如20201203包含2020年12月23日创建的所有文件)。目录中的文件是这样命名的: {filename}{format}{extension} 对于目录20201203的例子,我有这3个文件: < li>file1_300_300.png < li>file1_150_150.png < li>file2_300_300.png 我想获得特