具有数据库中现有特定集合的 MongoDb GridFS

标签 mongodb gridfs

考虑“餐厅”mongodb 数据库中的以下“餐厅”集合文档。

{
"_id" : ObjectId("55f6564073fc0a09338cf434"),
"address" : {
    "building" : "97-22",
    "coord" : [ 
        -73.8601152, 
        40.7311739
    ],
    "street" : "63 Road",
    "zipcode" : "11374"
},
"borough" : "Queens",
"cuisine" : "Jewish/Kosher",
"grades" : [ 
    {
        "date" : ISODate("2014-11-23T17:30:00.000-06:30"),
        "grade" : "Z",
        "score" : 20
    }, 
    {
        "date" : ISODate("2013-01-16T17:30:00.000-06:30"),
        "grade" : "A",
        "score" : 13
    }, 
    {
        "date" : ISODate("2012-08-01T17:30:00.000-06:30"),
        "grade" : "A",
        "score" : 13
    }, 
    {
        "date" : ISODate("2011-12-14T17:30:00.000-06:30"),
        "grade" : "B",
        "score" : 25
    },

   ........
   .......
   .......
     {
        "date" : ISODate("2011-12-14T17:30:00.000-06:30"),
        "grade" : "AZZ",
        "score" : 25
    },   -- It reaches 15 MB
],
"name" : "Tov Kosher Kitchen",
"restaurant_id" : "40356068"

在此文档中,“grades”字段是嵌入的文档数组。该数组将达到 mongodb 最大文档大小 16Mb。所以现在我们要改变这个集合的数据模型。我开始知道在 mongoDb 中我们可以使用“gridfs”存储超过默认限制 16mb 的文档。我无法找到证明这一点的链接。我需要将 gridfs 文档与集合中的现有字段一起存储。

最佳答案

Just because you can embed documents, it doesn't mean that it's always a good idea. More often than not, it isn't.

Markus W Mahlberg

它基本上只适用于“一对(非常)少”的关系。在您的情况下,情况有所不同。

提出正确的问题。你真正想知道什么?我的猜测是

What are the grades for a given restaurant?

因此,建模变得很容易。首先是restaurants集合

{
  _id: someObjectId,
  name: "The Foo Bar",
  cuisine: "Foo and Baz",
  ...
}

和一个成绩集合:

{
  _id: new ObjectId(),
  restaurant: someObjectId,
  grade: "A",
  date: someISODate
}

回答问题无非就是:

db.grades.find(
  { restaurant: givenRestaurantsObjectId }
)

关于具有数据库中现有特定集合的 MongoDb GridFS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32816519/

相关文章:

node.js - 如何在一次请求中将多个文件保存在gridFS中?

c++ - 使用 C++ 在本地磁盘上使用 GridFS

mongodb - Spark 流 : foreachRDD update my mongo RDD

mongodb - 在 MongoDB 中存储非常大的文档

mongodb sort with skip and limit 不根据索引对记录进行排序

javascript - Mongoose ,nodejs,全文搜索

node.js - MongoDB GridFS API 返回损坏的 .zip

ruby-on-rails - 从 GridFS 检索文件并作为常规 IO::File 传递

java - 创建 Query like "A is "b"and C is '' "(Spring Boot/Spring Data w/Mongo)

node.js - Mongoose $text 字段错误