假设我有以下数据结构:
var user = {_id: 'foo', age: 35};
var post = {_id: '...', author: {$ref: user, $id: 'foo'},...};
Run Code Online (Sandbox Code Playgroud)
如何查询引用用户[foo]的所有帖子?我尝试了以下但不工作:
db.post.find('author._id': 'foo');
var u = db.user.find({_id: 'foo'});
db.post.find('author': u);
Run Code Online (Sandbox Code Playgroud)
我也无法从官方文档和谷歌找到答案!
任何人有任何想法?
使用MongoDB中的DBREF数据类型,文档可能如下所示.但是$ref每行中的字段都显得多余,因为每一行都明显指向users集合.
有没有办法引用其他文件而没有多余的$ref余地?
{
$id: {$oid : "4f4603820e25f4c515000001"},
title: "User group",
users: [
{_id: {$ref: "users", $id: { $oid: "4f44af6a024342300e000002"}}, isAdmin: true }
]
],
Run Code Online (Sandbox Code Playgroud) MongoDB中是否有一种方法可以使用具有"ON DELETE CASCADE"功能的外键?
我知道你可以使用DBRef作为一种外键,但是当删除引用指向的集合中的项时,引用返回null.但我希望删除引用所属的项目.我该怎么做呢?
或者每次我删除的东西都需要检查对它的引用?
假设我有一个包含2个集合的MongoDB实例 - 地点和人物.
典型的地方文档如下:
{
"_id": "someID"
"name": "Broadway Center"
"url": "bc.example.net"
}
Run Code Online (Sandbox Code Playgroud)
而一个人的文件是这样的:
{
"name": "Erin"
"place": DBRef("places", "someID")
"url": "bc.example.net/Erin"
}
Run Code Online (Sandbox Code Playgroud)
有没有办法验证人员集合中每个文档的位置 DBRef ?
我正在使用最新版本的Meteor(0.5.9),当我尝试插入这样的文档时:
Contacts.insert({
_id : 'gBTqByxvoz9PdFxmy',
name : 'Albert Einstein',
infoDocument: {
'$ref': 'documents',
'$id': 'zigeoa8RgAukxwYoi',
'$db': 'meteor'
},
owner : 'public',
slug : 'gBTqByxvoz9PdFxmy',
type : 'contact'
}
Run Code Online (Sandbox Code Playgroud)
我在服务器控制台中收到错误"[错误:密钥$ ref不能以'$'开头]".Meteor中是否支持DBRefs?
我对mongodb很新.我正在使用spring-data-mongodb来查询我的java.如果可以实现,请指导我.
假设我有两个对象"Car"和"User"如下,其中car有用户列表,
Class Car {
@Id
String id;
String model;
@DBRef
List<User> users;
@DBRef
Company company;
}
Class User {
@Id
String id;
String name;
}
Run Code Online (Sandbox Code Playgroud)
我想为用户找到所有汽车,(找到所有汽车用户已经给用户的车辆)
是否有可能实现使用spring-data-mongodb?
如果只有一个DBRef元素,这很容易,例如,对于公司我可以写这样的查询,
new Query(Criteria.where("company.$id").is(new ObjectId(companyId)))
Run Code Online (Sandbox Code Playgroud)
但是,如果有一个引用为DBRef的元素列表,如何实现这一点?
感谢帮助.
我正在使用spring-data-mongodb-1.2.0.RELEASE.我有两个类A和B,其中B有一个对A的引用,它用@DBRef注释.
A类:
@Document(collection = "a")
public class A {
@Id
public String id;
/** The TicketGrantingTicket this is associated with. */
@Field
public String name;
public A(String id, String name) {
this.id = id;
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
B级:
@Document(collection = "b")
public class B {
@Id
public String id;
@Field
public String name;
@DBRef
@Indexed
public A a;
public B(String id, String name, A a) {
super();
this.id = id;
this.name = name;
this.a = a;
}
} …Run Code Online (Sandbox Code Playgroud) 我使用带有nodejs REST服务的MongoDB,它暴露了我存储在里面的数据.我有一个关于如何查询使用$ ref的数据的问题.
以下是Object的示例,其中包含对其他对象(详细信息)的引用:
{
"_id" : ObjectId("5962c7b53b6a02100a000085"),
"Title" : "test",
"detail" : {
"$ref" : "ObjDetail",
"$id" : ObjectId("5270c7b11f6a02100a000001")
},
"foo" : bar
}
Run Code Online (Sandbox Code Playgroud)
实际上,使用Node.js和mongodb模块,我执行以下操作:
db.collection("Obj").findOne({"_id" : new ObjectID("5962c7b53b6a02100a000085"},
function(err, item) {
db.collection(item.$ref).findOne({"_id" : item.$id}, function(err,subItem){
...
});
});
Run Code Online (Sandbox Code Playgroud)
实际上我做了2个查询,得到了2个对象.这是一种"懒惰的装载"(不完全是,几乎)
我的问题很简单:是否可以在一个查询中检索整个对象图?
谢谢
解决方案可能正在盯着我,但我找不到任何运气.我的问题是我需要找到包含指定DBRef的所有文档.这是要搜索的集合的结构:
{
"_id" : ObjectId("4e2d4892580fd602eb000003"),
"date_added" : ISODate("2011-07-25T11:42:26.395Z"),
"date_updated" : ISODate("2011-07-25T11:43:09.870Z"),
...
"a_list_of_dbrefs" : [
{
"$ref" : "somecollection"
"$id" : "4e2d48ab580fd602eb000004"
}
],
...
"name" : "some name"
}
Run Code Online (Sandbox Code Playgroud)
我需要能够根据出现的DBRef检索一组文档a_list_of_dbrefs(有些文件a_list_of_dbrefs可能不包含DBRef,其他文件可能包含1,其他文件可能包含1个以上).
这是如何完成的?
我有一个包含1亿个几何文档的集合.
我有第二个集合,其中包含与每个其他几何相关联的时间数据.这将是365*96*1亿或3.5万亿个文档.
我不想存储超过需要的1亿个条目(365*96),而是将它们保存在单独的集合中,并在MongoDB中执行一种JOIN/DBRef /尽我所能.
首先,我想通过使用geoIntersection从几何集合中获取GUID列表.这将把它过滤到1亿到5000.然后使用那些5000几何guids我想根据我指定的5000个goemetries和附加日期标准过滤3.5万亿个文档,并汇总数据并找到平均值.对于您指定的日期条件,剩下5,000个几何和5000个平均值.
这基本上是我在SQL中知道的JOIN,这在MongoDB中是可能的,并且可以在不到10秒的时间内以最佳方式完成.
澄清:据我所知,这就是DBrefs所使用的,但我读到它根本没有效率,并且处理这么多数据时它不适合.
dbref ×10
mongodb ×10
cascade ×1
foreign-keys ×1
indexing ×1
javascript ×1
join ×1
meteor ×1
node.js ×1
reference ×1
validation ×1