MongoDB聚合-根据数据数组过滤结果



我想要一组Connection类型模式的随机数据。但我想根据一组数组"IsConnection">来过滤数据,该数组是userID的集合,这样提取的数据就不会包括其userID位于‘IsConnection’数组中的任何文档。

最初,我尝试使用以下逻辑,以及我发现的许多其他过栈溢出逻辑,但都不起作用。

"isConnection": [
"62adca9063bc6adb05d79db8",
"62af5f3a3920076f461d8a3f",
"62bfd0935d52cdde5a4e89a9",
"62b3bb29342af89edcd11264"
]
let Connections = await ConnectionModel.aggregate([
{ $match: { UserID: { $ne: isConnection } } },
{ $sample: { size: 10 } }
])

$ne正在寻找完全匹配。你想使用$nin(不是in),就像这样:

let Connections = await ConnectionModel.aggregate([
{ $match: { UserID: { $nin: isConnection } } },
{ $sample: { size: 10 } }
])

此外,只需确保UserID实际上是string类型,而不是ObjectID,否则您还必须转换输入数组。

最新更新