【问题标题】:Retrieve records in mongoDB using bidirectional query使用双向查询检索 mongoDB 中的记录
【发布时间】:2013-06-08 23:32:56
【问题描述】:

我有两个系列 - TicketsUsersuser 可以有一对多 tickets。票据集合定义如下

Ticket = {_id, ownerId, profile: {name}}

ownerId 用于查找属于特定人员的所有票证。我需要编写一个查询来获取所有没有票的用户。

如何编写此查询,而不必遍历所有用户,检查用户 ID 是否出现在任何票证中?

双向存储会给我带来任何性能问题吗?例如,如果我要更改我的 users 集合并添加一个 tickets: [ticketID, ticketID2, ...] 数组?

【问题讨论】:

    标签: mongodb bidirectional-relation


    【解决方案1】:

    我会选择存储在用户中的一系列票证。据我所知,Mongo 并没有办法根据另一个集合中的(缺少)元素来查询一个集合。但是,使用数组,您可以简单地执行db.users.find({tickets:[]})

    【讨论】:

    • 我想我会采用这种方法。不过,关于您的查询,如果我正在寻找“没有任何票证的用户”,您的查询是否已读取,获取存在票证但不等于空的所有用户?
    • 哦,你是对的。我已经编辑了答案以找到没有票的用户。
    • 是的,我修改了它,以便在存在没有tickets 字段的现有用户开始使用建议的exists: false 想法的情况下,它也会返回我。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多