Javascript 如何在不同的对象字段中查找重复值?
如何使用Javascript 如何在不同的对象字段中查找重复值?,javascript,node.js,mongodb,mongoose,aggregation-framework,Javascript,Node.js,Mongodb,Mongoose,Aggregation Framework,如何使用mongoose搜索不同字段中的重复值 这里是示例文档: { "followers": { { "_id": "5bf6d610d3a3f31a6c75a9f4" }, { "_id": "5bf6d610d3a3f31a6c75a8c3" } }, "following"
mongoose
搜索不同字段中的重复值
这里是示例文档:
{
"followers": {
{
"_id": "5bf6d610d3a3f31a6c75a9f4"
},
{
"_id": "5bf6d610d3a3f31a6c75a8c3"
}
},
"following": {
{
"_id": "5bf6d610d3a3f31a6c75a9f4"
},
{
"_id": "5bf6d610d3a3f31a6c75b7a2"
}
},
}
{
{
"_id": "5bf6d610d3a3f31a6c75a9f4"
}
}
db.collection.aggregate([
{ $unwind : "$followers"},
{ $unwind : "$following"},
{ $project : {
_id: 0,
matchId: { $cond: [ {$eq: [ "$followers._id", "$following._id" ]} ,
"$following._id", null ] }
}},
{$match : {"matchId" : {$ne : null}}}
])
/* 1 */
{
"matchId" : "5bf6d610d3a3f31a6c75a9f4"
}
我想在
followers
和followers
字段下找到相同的\u id
值
预期输出:
{
"followers": {
{
"_id": "5bf6d610d3a3f31a6c75a9f4"
},
{
"_id": "5bf6d610d3a3f31a6c75a8c3"
}
},
"following": {
{
"_id": "5bf6d610d3a3f31a6c75a9f4"
},
{
"_id": "5bf6d610d3a3f31a6c75b7a2"
}
},
}
{
{
"_id": "5bf6d610d3a3f31a6c75a9f4"
}
}
db.collection.aggregate([
{ $unwind : "$followers"},
{ $unwind : "$following"},
{ $project : {
_id: 0,
matchId: { $cond: [ {$eq: [ "$followers._id", "$following._id" ]} ,
"$following._id", null ] }
}},
{$match : {"matchId" : {$ne : null}}}
])
/* 1 */
{
"matchId" : "5bf6d610d3a3f31a6c75a9f4"
}
我应该使用什么查询?试试这个:
{
"followers": {
{
"_id": "5bf6d610d3a3f31a6c75a9f4"
},
{
"_id": "5bf6d610d3a3f31a6c75a8c3"
}
},
"following": {
{
"_id": "5bf6d610d3a3f31a6c75a9f4"
},
{
"_id": "5bf6d610d3a3f31a6c75b7a2"
}
},
}
{
{
"_id": "5bf6d610d3a3f31a6c75a9f4"
}
}
db.collection.aggregate([
{ $unwind : "$followers"},
{ $unwind : "$following"},
{ $project : {
_id: 0,
matchId: { $cond: [ {$eq: [ "$followers._id", "$following._id" ]} ,
"$following._id", null ] }
}},
{$match : {"matchId" : {$ne : null}}}
])
/* 1 */
{
"matchId" : "5bf6d610d3a3f31a6c75a9f4"
}
输出:
{
"followers": {
{
"_id": "5bf6d610d3a3f31a6c75a9f4"
},
{
"_id": "5bf6d610d3a3f31a6c75a8c3"
}
},
"following": {
{
"_id": "5bf6d610d3a3f31a6c75a9f4"
},
{
"_id": "5bf6d610d3a3f31a6c75b7a2"
}
},
}
{
{
"_id": "5bf6d610d3a3f31a6c75a9f4"
}
}
db.collection.aggregate([
{ $unwind : "$followers"},
{ $unwind : "$following"},
{ $project : {
_id: 0,
matchId: { $cond: [ {$eq: [ "$followers._id", "$following._id" ]} ,
"$following._id", null ] }
}},
{$match : {"matchId" : {$ne : null}}}
])
/* 1 */
{
"matchId" : "5bf6d610d3a3f31a6c75a9f4"
}
followers
和follower
将是数组。是吗?@HardikShah是的!谢谢,但是我如何在单个文档中进行查询(我想在单个文档中但在两个不同的字段中查找重复ID)是的,您可以使用我提供的相同代码片段进行查询。只需将$match
添加到聚合顶层的特定Id即可。你能发布你的整个样本数据结构吗?所以,我可以修改您的要求。