gpt4 book ai didi

javascript - 给定一个 ID 列表,查询集合中不存在哪些 ID 的最佳方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 09:29:57 24 4
gpt4 key购买 nike

我有一组文档,其中包含唯一的 id 字段。现在我有一个 id 列表,其中可能包含一些不存在于集合中的 id。从列表中找出这些 ID 的最佳方法是什么?

我知道我可以使用 $in 运算符来获取列表中包含 ID 的文档,然后与给定的 ID 列表进行比较,但是有更好的方法吗?

最佳答案

我想您的收藏中有以下文档:

{ "_id" : ObjectId("55b725fd7279ca22edb618bb"), "id" : 1 }
{ "_id" : ObjectId("55b725fd7279ca22edb618bc"), "id" : 2 }
{ "_id" : ObjectId("55b725fd7279ca22edb618bd"), "id" : 3 }
{ "_id" : ObjectId("55b725fd7279ca22edb618be"), "id" : 4 }
{ "_id" : ObjectId("55b725fd7279ca22edb618bf"), "id" : 5 }
{ "_id" : ObjectId("55b725fd7279ca22edb618c0"), "id" : 6 }

和下面的 id 列表

var listId = [ 1, 3, 7, 9, 8, 35 ];

我们可以使用 .filter方法返回不在您的集合中的 ids 数组。

var result = listId.filter(function(el){
return db.collection.distinct('id').indexOf(el) == -1; });

这产生

[ 7, 9, 8, 35 ] 

现在您还可以使用 aggregation frameworks$setDifference运营商。

db.collection.aggregate([
{ "$group": { "_id": null, "ids": { "$addToSet": "$id" }}},
{ "$project" : { "missingIds": { "$setDifference": [ listId, "$ids" ]}, "_id": 0 }}
])

这会产生:

{ "missingIds" : [ 7, 9, 8, 35 ] }

关于javascript - 给定一个 ID 列表,查询集合中不存在哪些 ID 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31663037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com