MongoDB - DBRef

2023-12-21

我在使用 DBRef 时遇到了一些麻烦,看看这个例子:

db.fruit.save ({"_id" : "1" , "name" : "apple"});
db.fruit.save ({"_id" : "2" , "name" : "grape"});
db.fruit.save ({"_id" : "3" , "name" : "orange"});
db.fruit.save ({"_id" : "4" , "name" : "pineapple"});

db.basket.save ({"_id" : "1", "items" : [
    {"$ref" : "fruit", "$id" : "1", "quantity" : 5},
    {"$ref" : "fruit", "$id" : "3", "quantity" : 10}
]})

现在,让我们找到“篮子”集合:

> db.basket.find ()
{ "_id" : "1", "items" : [
    {
        "$ref" : "fruit",
        "$id" : "1"
    },
    {
        "$ref" : "fruit",
        "$id" : "3"
    }
] }

“数量”属性消失了?!有人知道为什么吗?还有其他选择吗?

Thanks.


语法为dbref http://www.mongodb.org/display/DOCS/Database+References#DatabaseReferences-DBRef is

  { $ref : <collname>, $id : <idvalue>[, $db : <dbname>] }

但是您在 dbref 中添加了不支持的数量字段。那就是问题所在。把它带到外面

db.basket.save ({"_id" : "1", "items" : [
    {"quantity" : 5 , item : {"$ref" : "fruit", "$id" : "1"}},
    {"quantity" : 10, item : {"$ref" : "fruit", "$id" : "3"}}
]})

什么样的样子(吓人)

{
    "_id" : "1",
    "items" : [
        {
            "quantity" : 5,
            "item" : {
                "$ref" : "fruit",
                "$id" : "1"
            }
        },
        {
            "quantity" : 10,
            "item" : {
                "$ref" : "fruit",
                "$id" : "3"
            }
        }
    ]
}

但我的建议是,完全放弃 dbref,只使用像这样的简单结构

db.basket.save ({"_id" : "1",items:[
                        {item_id:"1",quantity:50},
                        {item_id:"3",quantity:10}
                ]})

这更干净,看起来像

{
    "_id" : "1",
    "items" : [
        {
            "item_id" : "1",
            "quantity" : 50
        },
        {
            "item_id" : "3",
            "quantity" : 10
        }
    ]
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoDB - DBRef 的相关文章

随机推荐

  • FMDB开放数据库

    我正在尝试打开资源中项目中的数据库 问题是好像找不到数据库文件 我尝试使用完整路径 它有效 但这不是一个好的解决方案 我现在想知道如何打开它 我正在使用这段代码 db FMDatabase databaseWithPath bbdd sql
  • htaccess 从 url 中删除字符并重定向

    我想脱衣 来自网址 例子 mysite com something想要重定向到mysite com something 通过启用 mod rewrite 和 htaccesshttpd conf然后将此代码放入您的 htaccess und
  • Select2:如何防止标签排序

    当用户选择许多项目 标签 时 它们会自动按字母顺序排序 如何使用Select2 4 0防止自动排序并保留用户的顺序 Update 提到的 可能的重复问题 适用于旧版本的 Select2 v3 我询问版本 4 它与旧版本不同 并且提到的答案不
  • flake8 抱怨过滤器子句中的布尔比较“==”

    我在 mysql 数据库表中有一个布尔字段 table model class TestCase Base tablename test cases obsoleted Column obsoleted Boolean 要获取所有未过时测试
  • 本地修改数据的 Firebase 同步:处理错误和全局状态

    我有两个相关问题Firebase 网络平台 https www firebase com docs web s 将本地修改的数据同步到服务器 https www firebase com docs web guide offline cap
  • 不可变的@ConfigurationProperties

    Spring Boot 是否可以拥有不可变 最终 字段 ConfigurationProperties注解 下面的例子 ConfigurationProperties prefix example public final class My
  • 在xml中引用xsd时xsl转换问题

    我对 XSL 相当陌生 需要有关转换问题的帮助 我有一个由 XSD 描述的 XML 文件 我使用 XSL 文件将 XML 转换为 HTML 我想在 XML 文件中引用 XSD 但是当我这样做时 XML 不会被转换 XML 示例
  • 您可以将宽度应用于 :before/:after 伪元素 (content:url(image)) 吗?

    这是我最近的问题的补充 是否可以使用伪元素使包含元素环绕绝对定位元素 如clearfix https stackoverflow com questions 14977324 is it possible to use pseudo ele
  • Android:进度对话框在加载时更改 ProgressDialog.setMessage()

    我希望有人可以帮助我弄清楚如何仅使用一个虚拟计时器来更改进度对话框中的设置消息对话框 该虚拟计时器通过字符串数组或任何其他方式循环 例如 在加载时 它可以说正在加载 gt 构建 gt 渲染 gt 等 就像一个 1 2 秒计时器 这只是为了我
  • 为什么 DYLD_LIBRARY_PATH 没有在这里传播?

    我有一个简单的 C 程序 我试图运行该程序 该程序与我之前构建的 Boost Thread 库的版本链接 我似乎无法理解运行时库路径在 OS X 上的行为方式 由于我的 Boost 库没有RPATH 相对安装名称 https develop
  • printf 双精度数的舍入行为

    有人可以解释这种行为吗 我很清楚浮点数的机器级表示 这似乎与 printf 及其格式有关 这两个数字都用浮点表示法精确表示 检查 乘以 64 给出一个整数 include
  • 如何将音频文件从android客户端发送到servlet服务器

    我想将音频文件 mp3 文件从 android 客户端发送到 servlet 服务器并将其保存在某个位置 如果我在该位置播放保存的 mp3 文件 它应该可以播放 我的问题是有没有办法将 mp3 文件直接从客户端发送到服务器并在 servle
  • 防病毒软件正在阻止 nodemailer - 错误:证书链中的自签名证书

    我正在使用 Nodemailer 发送电子邮件 但我的防病毒软件阻止了 Nodemailer 当我关闭防病毒软件时 发送电子邮件没有问题 有没有可能的方法使用nodemailer发送电子邮件而不禁用防病毒软件 const transport
  • 是否可以开发具有蓝牙功能的 iOS 应用程序?

    以下情况可能吗 假设我有一个具有蓝牙功能的秤 当我打开它时 它会通过 BT 发送重量 从技术上讲是否可以开发一款与体重秤配对并从中接收数据的 iOS 应用程序 据苹果公司称 技术问答 QA1657 使用外部 带蓝牙的配件框架 设备 http
  • 如何在 JavaScript 中围绕折线绘制多边形?

    我想围绕折线绘制一个多边形 在我的例子中 折线是 Google 地图方向 我需要在 Google 地图画布内显示其周围的多边形 First 对于偏移 我使用 JavaScript Clipper 库 我有以下折线 路线 我使用 Clippe
  • 在php中将地球公里转换为弧度

    我正在尝试将地球公里转换为弧度 我知道这个问题已经在其他地方得到了回答 但所有这些答案似乎都没有正确回答 到目前为止我所做的是 radians km 6371 6371 is the radius of earth in Km 它是否正确
  • 当数据库提供 ID 时添加新的 Ember.js 对象/记录

    我正在尝试 Ember js Node js 和 MongoDB 我的思路基于 Ember 网站上的精彩视频 使用 Node js Express 和 MongoDB 创建 REST API 我在 Ember js 方面遇到了障碍 试图让我
  • Django:如何重写authenticate()方法?

    我用的是自定义的User 我有一个email verified该用户的字段 我希望当用户登录时 如果此字段为false 我做不到views py因为用户可以从各种来源登录 Django 站点 也可以从 REST API 登录 整个目的是避免
  • 在 R 中解析 HTML 文件

    我想从网站读取 HTML 文件 具体来说 我想从 gutenberg org 阅读 HTML 格式的书籍 每章的标题用标签 h2 标记 每章的内容在 h2 之后的段落标签 p 中 使用 XML 包 我可以获得每个标签的值或完整的 HTML
  • MongoDB - DBRef

    我在使用 DBRef 时遇到了一些麻烦 看看这个例子 db fruit save id 1 name apple db fruit save id 2 name grape db fruit save id 3 name orange db