我有一个票务系统,每个票证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。
答案 0 :(得分:0)
您需要使用db.collection.distinct()
方法。要检索“状态”未“关闭”的文档的“ID”,您需要使用$ne
运算符。
db.collection.distinct( 'id', { 'status': { '$ne': 'closed' } } )