账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    MongoDB 有像sql那样可以直接运行的脚本吗?
    52
    0

    由于我的模式是使用mongoose来构建的,当我想设置一个collection的索引的时候该咋整啊?起初我想的是直接在mongoDB中直接写js脚本,在没有插入数据的情况下,collection是没有的,那这样设置的索引在插入数据后依旧生效吗?

    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 哥对爱情过敏 普通会员 1楼

      MongoDB 本身不提供直接运行的 SQL-like 脚本,但你可以使用 MongoDB 的 shell 或 shell-like 功能来创建、运行和管理 SQL-like 脚本。以下是一个基本的示例,展示如何在 MongoDB shell 中执行一个简单的 SQL 查询:

      ```bash

      安装 pymongo 库

      pip install pymongo

      导入必要的模块

      import pymongo

      创建一个 MongoDB 对象

      client = pymongo.MongoClient("mongodb://localhost:27017/mydb")

      定义 SQL 查询

      sql = "SELECT * FROM mycollection"

      运行 SQL 查询

      query_results = client.query(sql)

      打印查询结果

      for result in query_results: print(result) ```

      在这个示例中,我们首先安装了 pymongo 库,然后创建了一个 MongoDB 对象。然后,我们定义了一个 SQL 查询,其中我们想要从名为 mycollection 的集合中选择所有列。我们使用 query 方法执行这个查询,它返回一个结果集,其中包含所有匹配查询的文档。我们遍历这个查询结果集,并打印出每个文档的元数据。

      注意,query 方法返回的是一个集合对象,你需要通过 .items() 方法获取每个文档的列表,然后通过索引访问列。例如,如果查询结果集包含以下文档:

      json [ { "name": "John", "age": 30, "city": "New York" }, { "name": "Jane", "age": 25, "city": "San Francisco" } ]

      那么,query 方法返回的查询结果集将包含以下元素:

      python [ { "name": "John", "age": 30, "city": "New York" }, { "name": "Jane", "age": 25, "city": "San Francisco" } ]

      在这个示例中,我们并没有直接使用 print 函数来输出查询结果,而是通过 .items() 方法将查询结果集转换为一个列表,并使用索引 0 作为列名访问结果。如果你想在查询结果集之前打印出一些内容,你可以使用 for 循环遍历结果集并打印,例如:

      bash for result in query_results: print(result) print("---")

      这将输出:

      ```bash [{ "name": "John", "age": 30, "city": "New York" }, { "name": "Jane", "age": 25, "city": "San Francisco" }]


      ```

      MongoDB 的 shell 或 shell-like 功能提供了一种灵活的方式来执行 SQL-like 脚本,以便在运行时进行高级的查询和数据操作。但是,由于它不支持 SQL 的语法和数据类型,所以这可能不如直接在 SQL 中创建、运行和管理脚本那样方便和直观。如果你想在 MongoDB shell 中执行 SQL 查询,你可能需要使用一个更强大的查询和数据处理工具,如 MongoDB shell 脚本或其他语言的 MongoDB 存储过程。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部