我在MongoDB中有如下数据。
const A = { uid: '1234',
works: [
{ name: 'car',
item:['tire','wheel']
},
{ name: 'ship',
item:['tire','wheel']
}
]
我的目标是查找重复的名称是否存在。
总之,我只想知道名字。
所以'res.send(result)'给我的感觉就像'[car,ship]'。
但是下面的代码不起作用。我该怎么做?非常感谢。
const workName = await User.findOne({
uid: userID, works:{$in:['name']}
});
答案 0 :(得分:1)
最简单的方法是查找名称的集合并检查计数是否大于一。由于它位于数组内部,因此我们需要展开它。
以下查询有效,以检测子文档是否包含每个文档的重复项。
db.getCollection('collection_name').aggregate([{"$unwind":"$works"} ,{"$group":{"_id":{"name":"$works.name","uid":"$uid"},"count":{"$sum":1}}},{"$match":{"count":{"$gte":2}}}])
如果要在所有文档中查找,请从组的_id中删除uid。