gpt4 book ai didi

javascript - 根据 mongodb 集合数组验证数组

转载 作者:太空宇宙 更新时间:2023-11-04 00:39:27 24 4
gpt4 key购买 nike

我正在尝试验证我的 mongodb 集合。我们将事件存储为集合中的数组。

馆藏信息:[纽约、帕洛阿尔托、华盛顿特区]

用户输入:[纽约,帕洛阿尔托]

我想将输入与集合进行比较并返回“位置已添加”。我的代码如下

var addevent = req.body.events;
var addeventarr = addevent.split(',');
Event.findOne({'location': eventloc }, 'events', function(err, event) {
var eventcheck = event.events;
console.log(eventcheck.indexOf(addeventarr));

我想我可以做如下的事情:

if(eventcheck.indexOf(addevent) != -1 || null){
console.log("already added");
}else{
console.log("added");

然而,indexOf 返回 -1 而不是 0。如果我只输入一个“New York”,我会收到“已添加”消息,但如果我同时尝试这两个,我会收到“已添加”消息。

如有任何帮助,我们将不胜感激。

最佳答案

您可以为此使用聚合框架并利用 set operators $setIntersection 它将返回一个数组,其中包含每个输入数组中出现的元素。因此,对于您的示例,如果用户输入数组 ["New York", "Palo Alto"],则应用 $setIntersection 在包含元素 ["New York", "Palo Alto", "Washington DC"]events 数组上,这将返回集合 ["New York", "Palo Alto"] 因为该数组对于输入和集合的 events 数组是通用的,因此这个结果将告诉您已添加到事件数组中的元素。

如果结果引入空数组字段,则输入数组中的元素不是 events 数组的成员,因此您可以进行适当的推断。

var addevent = req.body.events;
var addeventarr = addevent.split(',');
Event.aggregate([
{ "$match": { 'location': eventloc } },
{
"$project": {
"commonEvents": { "$setIntersection": [ "$events", addeventarr ] }
}
}
], function(err, result) {
console.log(result[0].commonEvents); // prints ["New York", "Palo Alto"]
});

关于javascript - 根据 mongodb 集合数组验证数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37512560/

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