如何仅获取不包含在另一条记录的数组中的记录
Posted
技术标签:
【中文标题】如何仅获取不包含在另一条记录的数组中的记录【英文标题】:How to get only the records which are not contained in the array of another record 【发布时间】:2021-12-26 11:38:46 【问题描述】:我正在尝试从 MongoDB 中检索未在另一个文档的数组字段中引用的所有记录。我有以下格式的数据:
[
"domain": "foo.com", "altNames": [] ,
"domain": "bar.com", "altNames": [] ,
"domain": "zaz.com", "altNames": ["foo.com", "bar.com"],
"domain": "baz.com", "altNames": ["boo.com"]
]
我想从这些数据中检索域为zaz.com
和baz.com
的记录,因为它们的domain
不在另一个记录altNames
数组中。
【问题讨论】:
【参考方案1】:执行自查并检查结果数组是否为空
db.collection.aggregate([
"$lookup":
"from": "collection",
let:
d: "$domain"
,
pipeline: [
"$match":
$expr:
$in: [
"$$d",
"$altNames"
]
,
$limit: 1
],
"as": "altNamesLookup"
,
"$match":
altNamesLookup: []
,
"$project":
altNamesLookup: false
])
这里是Mongo playground 供您参考。
【讨论】:
以上是关于如何仅获取不包含在另一条记录的数组中的记录的主要内容,如果未能解决你的问题,请参考以下文章
仅重新查询数据表视图表单中的一条记录 (MS Access)
Datatable C# - 如何根据 ID 从一个表中获取详细记录及其关联的另一表中的子记录