标签: dbref

如何使用DBRef查询mongodb

假设我有以下数据结构:

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)

我也无法从官方文档和谷歌找到答案!

任何人有任何想法?

reference mongodb dbref

56
推荐指数
3
解决办法
7万
查看次数

MongoDB - DBREF是否必要?

使用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 dbref

22
推荐指数
2
解决办法
2万
查看次数

MongoDB DBRef ON DELETE CASCADE

MongoDB中是否有一种方法可以使用具有"ON DELETE CASCADE"功能的外键?

我知道你可以使用DBRef作为一种外键,但是当删除引用指向的集合中的项时,引用返回null.但我希望删除引用所属的项目.我该怎么做呢?

或者每次我删除的东西都需要检查对它的引用?

cascade foreign-keys mongodb dbref

12
推荐指数
1
解决办法
3579
查看次数

如何验证MongoDB集合中的DBRef?

假设我有一个包含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 ?

validation mongodb dbref

11
推荐指数
1
解决办法
1450
查看次数

Meteor中是否支持DBRefs?

我正在使用最新版本的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 dbref meteor

11
推荐指数
0
解决办法
456
查看次数

使用spring-data-mongodb基于mongodb的DBRef列表中的匹配元素进行查询

我对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的元素列表,如何实现这一点?

感谢帮助.

mongodb dbref spring-data-mongodb

11
推荐指数
2
解决办法
9012
查看次数

Spring Data - MongoDB索引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)

indexing mongodb dbref spring-data-mongodb

10
推荐指数
2
解决办法
8996
查看次数

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

我使用带有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个对象.这是一种"懒惰的装载"(不完全是,几乎)

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

谢谢

javascript mongodb node.js dbref

9
推荐指数
3
解决办法
1万
查看次数

按DBRefs数组查找文档

解决方案可能正在盯着我,但我找不到任何运气.我的问题是我需要找到包含指定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个以上).

这是如何完成的?

mongodb dbref

8
推荐指数
2
解决办法
7225
查看次数

MongoDB和DBRef与空间数据一起使用

我有一个包含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所使用的,但我读到它根本没有效率,并且处理这么多数据时它不适合.

join mongodb dbref

8
推荐指数
1
解决办法
212
查看次数