gpt4 book ai didi

mongodb数组匹配

转载 作者:可可西里 更新时间:2023-11-01 10:34:22 25 4
gpt4 key购买 nike

我如何完成以下任务?

db.test.save( {a: [1,2,3]} );

db.test.find( {a: [1,2,3,4]} ); //must match because it contains all required values [1, 2, 3]
db.test.find( {a: [1,2]} ); //must NOT match because the required value 3 is missing

我知道 $in 和 $all,但它们的工作方式不同。

最佳答案

有趣..问题是..$in 和 $or 运算符应用于您正在比较的数组元素 against 集合中的每个文档,而不是元素文档中的数组..总结您的问题:如果集合中的任何文档恰好是传递数组的子集,您希望它是一个匹配项。除非你交换输入和输出,否则我想不出一种方法来做到这一点。我的意思是..让我们接受你的第一个输入:


db.test.find( {a: [1,2,3,4]} );


考虑把它放在一个临时集合中,比如:

db.temp.save( {a: [1,2,3,4]} );

现在遍历测试集合中的每个文档并在临时中“找到”它,使用 $all 运算符确保它被完全包含,即做这样的事情:

foreach(doc in test)<br/>
{
db.temp.find( { a: { $all: doc.a } } );
}


这绝对是一个解决方法!我不确定我是否缺少可以完成这项工作的任何其他运算符(operator)。

关于mongodb数组匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11647274/

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