MongoDB查询根据某些字段值排除记录

时间:2015-12-18 12:47:10

标签: mongodb mongodb-query

我有一个票务系统,每个票证ID都有多个版本/文件。当最后一个文档的状态=已关闭时,该票证被视为已关闭。我需要找出所有打开的门票。以下是SQL中的查询:

select distinct(id) from tickets where id not in (select id from tickets where status = 'closed');

MongoDB中的相应查询可以是什么?

以下是一张故障单文件的样本。

{
    "id" : 100,
    "timestamp": 1427863300000,
    "status" : "open",
    "description": "abc",
    "comments": "pqr"
    "assigned_to": "xyz"
}

可能有多个具有相同票证ID的文档。这样做是为了维护票证的历史。该应用程序允许用户以历史模式查看故障单详细信息。当具有相同ID但状态为#34;已关闭的文档时,将考虑该票证。插入数据库。

{
    "id" : 100,
    "timestamp": 1429200480000,
    "status" : "closed",
    "description": "abc",
    "comments": "pqr"
    "assigned_to": "xyz"
}

我想查询在任何文档中没有status = closed的不同故障单ID。

1 个答案:

答案 0 :(得分:0)

您需要使用db.collection.distinct()方法。要检索“状态”未“关闭”的文档的“ID”,您需要使用$ne运算符。

db.collection.distinct( 'id', { 'status': { '$ne': 'closed' } } )