gpt4 book ai didi

java - 存在于输入数组中

转载 作者:行者123 更新时间:2023-12-02 09:35:45 25 4
gpt4 key购买 nike

我们有一个股票集合:

stocks:

{"_id" : ObjectId("xxx"),"scrip" : "xxxxx2" }
{"_id" : ObjectId("xxy"),"scrip" : "xxxxx3" }
{"_id" : ObjectId("xyy"),"scrip" : "..." }

给定一个输入的股票数组[xxxxx7,xxxxx2,xxxxx3,xxxxx8],我们需要返回股票集合中不存在的股票数组。
所以预期的输出是:

[xxxxx7,xxxxx8]

有没有办法使用 Filter.expr 和 $setIsSubset(或任何其他替代方案)来实现此目的。
无法获得相同的示例。
感谢帮助

最佳答案

假设收集数据:

股票:

{"scripid" : "xxxxx2" }
{"scripid" : "xxxxx3" }
{"scripid" : "xxxxx4" }

因此,如果您需要从输入数组中获取不在股票集合的scripid中的元素列表,但不是股票集合中的元素列表不在输入数组中,则使用:

db.stocks.aggregate([  {
$group :{_id : null, scripids: {$push : '$scripid'}}
},{ "$project": { _id:0 , "inputArrayNINscripts": { "$setDifference": [ ['xxxxx7','xxxxx2','xxxxx3','xxxxx8'] , "$scripids" ] } } } ])

输出:

{
"inputArrayNINscripts" : [
"xxxxx7",
"xxxxx8"
]
}

否则,如果您需要来自股票scripid的元素列表(scripid's),这些元素不在传递的[xxxxx7,xxxxx2,xxxxx3,xxxxx8]中,那么,如建议的@Caconde 试试这个:

db.stocks.find({
"scripid": {"$nin": ["xxxxx7","xxxxx2","xxxxx3","xxxxx8"]}
}).toArray().map(scriptsNINArray => scriptsNINArray.scripid)

输出:

/* 1 */
[
"xxxxx4"
]

附加组件:

根据java代码的要求,请检查这些引用文献:

mongoDB-java-driver Aggregation , SO link to java aggregation example

关于java - 存在于输入数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57526020/

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