如何在mongoDB中的多对多关系中使用嵌入式文档结构?

monal86

我有一个叫公司的收藏

 {
    _id: ObjectId("1111"),
    name: 'ABc COrp',
    address: {
        Street: '124 Main Street'
        city: 'San Diego'
        state: 'California'
        zip: "92115"
    }
    vendor: [{
            vendor_id: ObjectId("1234")

        }, {
            vendor_id: ObjectId("4567"
            }]
    }
}
// vendor collection 
{
    _id: ObjectId("1234"),
    name: 'foodCA company',
    company: [company_id: ObjectId('11111')]
}

现在,我有一家公司的供应商类型,如食品,办公用品等。供应商与公司之间存在许多关系。

当我已经在使用嵌入式文档结构时,可以将dbref(http://www.mongodb.org/display/DOCS/Database+References#DatabaseReferences-DBRef)用于很多

谢谢!我是mongoDB的新手。我为自己的无知表示歉意。

萨尔瓦多·达利(Salvador Dali)

根据官方文档有两种选择:

  • dbRef
  • 手册参考。

dbRef

请记住:

若要解析DBRef,您的应用程序必须执行其他查询以返回引用的文档。许多驱动程序都有帮助程序方法,这些方法会自动形成对DBRef的查询。驱动程序1不会自动将DBRef解析为文档。

由于这些一些人(123和我自己看不到使用它们的点)。此外,dbRef允许您不仅引用另一个集合,而且引用另一个数据库。(我从未发现它有用,但这并不意味着其他人没有用)。

手动参考:

我喜欢这种方法,因为它超级简单且易于阅读。您有公司和供应商,所以

{
 companyID : 1,
 vendors: [1, 3, 19]
}

请注意,没有必要像这样做那样将每个供应商都当作一个对象。与您可以做的事情相比,您拥有的供应商数量很少:{companyID:1,vendors_food:[1、3],vendors_drinks:[17]}

许多具有不同类型的供应商,您可以做的事情是:

{
 companyID : 1,
 vendors: [{
    'type' : 'drink',
    'id' : 18
 },{
    'type' : 'food',
    'id' : 3
 }],
}

在为公司找到供应商之后[1, 6, 29],您可以将它们合并,并且只执行一个数据库请求,即可使用$ in查找有关所有供应商的信息

db.vendors.find({
  '_id': {
     $in: [1, 6, 29]
  }
});

请注意,这只是我与mongo合作的偏好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在springboot应用程序中使用嵌入式mongoDB进行junit测试?

mgo,mongodb:从嵌入式结构中查找与一个字段匹配的文档

如何在猫鼬中使用$ set动态更新嵌入式文档

我们何时应该在MongoDB中使用嵌入式文档?

Laravel:如何在多对多关系中使用where子句

如何在mongoDB中的嵌入式文档中提取特定元素

如何在Vba中使用标题打开Excel中的嵌入式对象?

如何在嵌入式源代码中使用组织模式源块中的变量?

如何在mongodb中搜索嵌入式文档?

如何使用id mongodb在嵌入式文档数组中查找数据?

如何在嵌入式文档中查找某个元素

如何使用mongoDB和spring数据在嵌入式文档中创建id

MongoDB按嵌入式文档结构分组

如何在mongodb中使用node.js删除嵌入式(嵌套)文档

如何在嵌入式数组mongodb中查询嵌入式文档

我如何在mongodb的更新操作中使用变量,该更新操作涉及数组或其他类型的嵌入式或嵌套文档?

如何在MongoDB中使用数组获取嵌入式文档(使用Mongoose)

mongodb与嵌入式文档的一对多关系

如何在嵌入式框架中使用Cocoapods?

如何在MongoDB中的嵌入式文档中获得同一级别的所有字段

如何使用Mongoose将值推入MongoDB中嵌入式文档中的数组?

查询MongoDB中的嵌入式文档

何时使用嵌入式文档MongoDB

如何在MongoDB中查询数组中的单个嵌入式文档?

与数组比较,如何在mongodb中检索部分嵌入式文档?

使用python(pymongo)在mongodb中编辑嵌入式文档

在mongodb中展开嵌入式文档

如何在Meteor中循环浏览嵌入式文档

如何在多对多关系中使用 ConcatRelated()

TOP 榜单

  1. 1

    来自Microsoft Office加载项taskpane.js的MySQL驱动程序模块的空引用

  2. 2

    使用AWS Cognito和React的仅限Facebook / Google的登录名(无用户名/密码)

  3. 3

    创建Windows Phone 8应用并将其连接到数据库的最佳方法(最好是SQL Server)

  4. 4

    为什么Java中的System.out.println()打印到控制台?

  5. 5

    卷曲函数无法解析来自bash中变量的代理

  6. 6

    是什么在Android的consumer-rules.pro和proguard-rules.pro之间的区别?

  7. 7

    设置与Apache POI Excel表散点图标记图标的颜色

  8. 8

    将Qt Pyside2与asyncio await语法一起使用?

  9. 9

    崇高的文字+蟒蛇的蟒蛇

  10. 10

    任务':app:minifyReleaseWithR8'.java.lang.NullPointerException的执行失败(无错误消息)

  11. 11

    OpenJDK的和AdoptOpenJDK的区别

  12. 12

    大型数据集缓存到Spark内存中时,“超出了GC开销限制”(通过sparklyr和RStudio)

  13. 13

    “执行测试CMAKE_HAVE_LIBC_PTHREAD”失败实际上是什么意思?

  14. 14

    使用Core 2.2中的Identity,如何在关闭浏览器15分钟后保持会话活动?

  15. 15

    React中的ForwardRefExoticComponent和ForwardRefRenderFunction有什么区别?

  16. 16

    猫鼬查找结果,然后将字段替换为findOne

  17. 17

    如何降级Google Colab的Torch版本

  18. 18

    Keras提前停止回调错误,val_loss指标不可用

  19. 19

    如何避免VSCode中的“导入路径不能以.ts扩展名结尾”错误?

  20. 20

    Nuxt.JS:如何在页面中获取路由URL参数

  21. 21

    是否有为什么会AccessibilityManager.sInstance导致内存泄漏的一个原因?

热门标签

归档