问题标签 [dbref]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1302 浏览

mongodb - DBRefs vs Map/Reduce vs 手动参考

我遇到了三种不同的“加入”集合的方式:

  1. 手动保留对您希望加入目标集合的集合的“外键-esk”引用
  2. 使用DBRefs
  3. 编写一系列Map/Reduce函数来维护关系

有人可以解释每个人的好处和我应该什么时候吗?

我的第一印象是 Map/Reduce 用于大型、常用的集合,而另外两个主要用于小型/快速查询。

0 投票
2 回答
12978 浏览

mongodb - query based on matching elements in DBRef list for mongodb using spring-data-mongodb

I am pretty new to mongodb. I am using spring-data-mongodb for my queries from java. Please guide me if this is achievable.

Say I have two objects "Car" and "User" as following, where car has list of users,

I want to find all cars for a user, (find all cars where car.users has given user)

Is it possible to achieve using spring-data-mongodb?

It's pretty easy if there was only one DBRef element, eg, for company I can write a query like this,

But, how to achieve this if there is a list of elements referenced as DBRef??

Thanks for help.

0 投票
1 回答
6239 浏览

java - 查询mongodb dbref内部字段

我需要隐藏所有 isActive 标志设置为 false 的用户相关数据。在许多集合中,我使用了 DBRef 类型的用户集合(大约 14 个集合),每个集合包含超过 1000 万条记录。

让我在示例的帮助下更正确地解释它。

假设我有两个集合:

  1. 用户
  2. 接触

用户集合包含以下字段:

  1. 名字(字符串)
  2. 姓氏(字符串)
  3. isActive(布尔值)

联系人集合包含以下字段:

  1. Contacter (User) 声明为 DBref 类型。
  2. 联系人(用户)声明为 DBRef 类型。
  3. 联系状态(字符串)

现在我想触发一个查询,它将获取所有联系人 ContactStatus = "Confirmed" && Contacter.isActive = true && Contactee.isActive = true

就 mongodb 而言,查询将是这样的:

但是当我在 mongo shell 中运行这个查询时,它总是返回一个零记录。

所以这里的问题是 1) 是否可以在 DBRef 的内部字段上触发查询?2)如果没有,那我怎么能做到这一点。

注意 - 在这个阶段,我无法修改我的数据模型。在“in”查询的帮助下,我可以做到这一点。但它最终会在我需要隐藏该用户的任何地方增加一次往返。

目前我正在使用 mongodb-2.4.5 和 Spring-Data-MongoDB-1.2.3 jar

到目前为止,我的代码是这样的 -

0 投票
1 回答
133 浏览

mongodb - GWT 的 RequestFactory 函数调用中的 MongoDB DBRef 处理

我有与 MongoDB 的 DBRef 相关的问题。想象一下这个场景:

所以给定的组文档有 3 个用户 DBRef。在 Group 的 java 类中,成员被标记为 morphia 作为@Reference:

问题:当调用 RequestFactory 函数 getGroup().with("members") 时,RequestFactory 是否会在只有 1 个 DB 访问中获得所有成员?

或者在上面给出的场景中,请求工厂是否会为 Group 文档中的每个 DBRef 进行 3 个 DB 访问?

非常感谢您提前。

0 投票
0 回答
1543 浏览

mongodb - 如何更改 MongoDB 的 DBRef?

因此,我将 MongoDB 用于一个项目,并且我有一台服务器用于对我的站点进行所有测试,并且我在几个表上使用了 DBRef,这创建了如下内容:

"comment": { "$ref": "user", "$id": ObjectId("xxxx"), "$db": "dev_server" }

现在我们有一个新的服务器用于实际的生产站点。由于我们使用真实信息,因此我们导出了数据库并将其放入一个名为“prod_server”的新数据库中。现在,DBRef 与上面的一样。我试图更新 $db 的值,但我得到了这个:

"comment": { "$db": "prod_server" "$id": ObjectId("xxxx"), "$ref": "user", }

随着这种变化,网络崩溃(mongo 自动更改为字母顺序)。我对此进行了搜索,发现 DBRef 的顺序很重要,否则它将不起作用。

那么为什么会有这个问题:“如何更改 DBRef”并保持正确的顺序?我为此使用了控制台和rockmongo,但它们都不起作用。

谢谢

0 投票
1 回答
323 浏览

mongodb - Mongodump 使用 DBRef 标准和索引?

我想转储数据库的某些部分,尤其是使用 -q / --query 选项的集合的某些部分。这是我正在做的事情:

转储正在运行,但速度非常慢。有 3M 个对象,并且pipe属性上有一个索引,所以事情不应该那么慢。看起来查询正在扫描整个集合。

有任何想法吗 ?

谢谢

0 投票
1 回答
2269 浏览

java - 使用spring数据(dbref)在mongo中映射类型字段的参考值

我的文档中有一个映射字段(键 = 内容类型,值 = 内容),我希望将值部分(内容,这是另一个文档)作为引用对象保存在 mongodb 中。

例如,对于内容类型“CONTENT_TYPE_X”,它应该保存为

“相关内容”:{“CONTENT_TYPE_X”:DBRef(“内容”,ObjectId(“51ea2c0167e855d6b3d3dda3”)}

对于正常的字段参考可以使用@DBREF,例如。

但是当然,在这种情况下,仅仅通过 put 是行不通的@DBRef,是否有可能实现我所说的?

非常感谢。

0 投票
1 回答
213 浏览

php - MongoDB - PHP 手册参考方法适用性

MongoDB新手在这里。我对引用有第一种方法,我的主要疑问是我是否针对我的情况使用了适当的策略(手动引用)。

在同一个数据库中处理 2 个集合(用户、消息),让我们以存储在用户集合中的文档为例:

以及存储在消息集合中的文档示例(从其他用户发送到“pluto”上方的用户):

登录的用户('pluto')可以看到他从其他用户收到的所有消息,但是,我不想打印'from_uid'值,我想用发件人的用户名替换它。

我的主要疑问是手动引用是否适合这种情况,因为使用这种技术(如果我没有错过理解所有内容),打印消息列表将涉及:

  1. 用于打印消息列表的“查询”
  2. 另一个“查询”,用于从其他集合中检索每条消息的用户名。此外,如果用户收到 1000 条消息,这种方法将不得不运行 1001 查询?

我的第二个疑问是是否有办法直接合并或替换两个游标的结果

0 投票
1 回答
7979 浏览

java - 在使用 java 获取文档时在 mongo 查询中传递 DBRef

要形成的查询:db.collectionB.find({type: DBRef("collectionA", NumberLong(47))});

集合 A 和集合 B 中有许多文档。我想搜索collectionB中“type”指的是collectionA中“_id”是NumberLong(47)的文档。

它使输出为空。为什么?

0 投票
5 回答
17283 浏览

javascript - Nodejs + mongodb:如何查询 $ref 字段?

我正在使用带有 nodejs REST 服务的 MongoDB,该服务公开了我存储在其中的数据。我有一个关于如何查询使用 $ref 的数据的问题。

这是一个 Object 的示例,其中包含对 anther 集合中另一个对象(详细信息)的引用:

实际上,使用 Node.js 和 mongodb 模块,我执行以下操作:

事实上,我做了 2 个查询,得到了 2 个对象。这是一种“延迟加载”(不完全是但几乎)

我的问题很简单:是否可以在一个查询中检索整个对象图?

谢谢