如何在Azure Mongo CosmosDB中查询三个字段无重复的文档
问题描述
我有如下示例数据:
"lastRun": [ { "_id": "64e03c733", "A": "valueA", "B": "valueA", "C": "valueA", }, { "_id": "64e03c734", "A": "valueA", "B": "valueB", "C": "valueC", }, { "_id": "64e03c735", "A": "valueA", "B": "valueA", "C": "valueB", } ]
实际存在大量此类数据,我希望查询出A、B、C三个字段值均不重复的文档。已知在MySQL中可通过c.field1 <> c.field2 AND c.field1 <> c.field3 AND c.field2 <> c.field3实现,请问在Azure Mongo CosmosDB中如何用JSON格式的查询语句实现该需求?
解决方案
在Azure Cosmos DB for MongoDB中,你可以通过$ne(不等于)操作符组合条件来筛选目标文档,具体JSON查询语句有两种写法:
写法一(显式使用$and)
db.collection.find({ "$and": [ { "A": { "$ne": "$B" } }, { "A": { "$ne": "$C" } }, { "B": { "$ne": "$C" } } ] })
写法二(隐式逻辑与,更简洁)
db.collection.find({ "A": { "$ne": "$B" }, "A": { "$ne": "$C" }, "B": { "$ne": "$C" } })
说明
$ne是MongoDB中的不等于操作符,功能等价于MySQL里的<>- 上述查询会返回所有满足A≠B、A≠C且B≠C的文档,对应示例数据中
_id为64e03c734的记录。
内容的提问来源于stack exchange,提问作者Jin
相关产品推荐
相关产品推荐

