【问题标题】:Access document directly by ID通过 ID 直接访问文档
【发布时间】:2019-02-14 10:08:14
【问题描述】:

我习惯于使用 firebase,我可以像这样通过从数据库中获取数据来直接访问文档。

db.collection('collectionName/documentID').get();

我似乎找不到任何有关在 mongodb 中执行类似操作的文档。我是否必须使用查找查询从 mongodb 中获取数据或者我错过了什么?谢谢

【问题讨论】:

    标签: mongodb mongodb-atlas mongodb-stitch


    【解决方案1】:

    我在想

    const collection = db.collection('collectionName');
    collection.findOne({_id: ObjectId('documentID'); });
    

    【讨论】:

    • 所以用这个方法,我还是需要对db进行查询。有什么方法可以直接访问它,因为我知道我正在寻找的对象的 id?
    • @juicy89,你的意思是 Firebase 的查询方式吗?如果是这样,我很抱歉,但我没有办法这样做。但如果提供,我会跟踪这篇文章以获得答案
    【解决方案2】:

    由于 mongo consolse 是一个交互式 javascript shell,一种方法是创建一个类似的方法:

    function collectionNameGet(idToFind) {
      return db.collection.find({_id: idToFind });
    }
    

    【讨论】:

      【解决方案3】:

      在mongo shell中你可以直接获取如下:

      db.st4.find({"_id" : "1234"})

      结果集:

      {“_id”:“1234”,“raw”:{“meas”:{“meas1”:{“data”:“blabla”},“mesa2”:{“data”:“foo”}} } }

      或者默认 mongo id 为:

      db.st1.find({"_id" : ObjectId("5c578d57ce9ba4a066ca2fa4")})

      { "_id" : ObjectId("5c578d57ce9ba4a066ca2fa4"), "name" : "只是一个名字", "users" : [ "user1", "user2" ] }

      以漂亮的格式显示结果

      db.st1.find({"_id" : ObjectId("5c578d57ce9ba4a066ca2fa4")}).pretty()

      结果集:

      {
          "_id" : ObjectId("5c578d57ce9ba4a066ca2fa4"),
          "name" : "Just a name",
          "users" : [
              "user1",
              "user2"
          ]
      }
      

      这里st4是我在数据库test中的集合名称,所以一旦你在mongo shell上,在上面的查询之前执行以下步骤:

      use test
      db.st1.insert({"name" : "Just a name", "users" : [ "user1", "user2" ] })
      

      然后你可以查询默认_id生成的mongo,你可以简单的查询得到最近添加到集合st1中的文档如下:

      db.st1.find().sort({_id:-1}).limit(1)
      

      希望这将帮助您在 mongo shell 上进行一些基本查询

      【讨论】:

        猜你喜欢
        • 2013-07-01
        • 2011-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-12
        • 2011-05-27
        • 1970-01-01
        相关资源
        最近更新 更多