我找不到答案。我看到的所有示例都是查找集合中字段123456
的值Number
。
但是,如果可能的话,我想知道是否可以在整个集合文档中搜索数组中的数字。
例如,这是我收藏的第一份文件:
{
"_id": "Qfjgftt7jLh3njw8X",
"reference": 102020026, // Field that I want to check
"type": "Moradias",
"n_beds": 5,
"price": 30000,
"departement": "Portalegre",
"city": "Ponte de Sor",
"street_name": "Rua do Comércio, CE",
"l_surface": 248,
"is_exclusive": true
}
客户端正在导入转换为JSON的XLSX文件,并添加到我的集合中,以便客户端插入reference
号码。
然后我想循环我的JSON,(可能有多个引用)获取客户端导入的引用,并检查这些引用是否已经存在于我的一个集合文档中。之后我会抛出一个错误。
我知道我可以做Collection.find({reference: '102020026'})
,但问题是我的收藏品中可以有100多种不同的参考文献。
我希望这是有道理的,并且在其他地方没有得到回应。
提前致谢!
答案 0 :(得分:1)
您可能希望使用index.html
mongo运算符(see doc)来查找给定数组的所有文档:
$in
这将返回所有文档,其中const ids = [
102020026,
102021407,
102023660,
];
Collection.find({reference: {$in: ids}});
匹配其中一个数字,在“ds”数组中给出。
答案 1 :(得分:0)
在我的案例中,解决方案:
使用@Jankapunkt回答的Mongo运算符$in
:
let arr = [];
for (let c = 0; c< myJSON.length; c++) {
arr.push(myJSON[c].reference);
}
if(Collection.find({reference: {$in: arr}}).count() > 1) {
alert(`Reference ${arr} already exists`);
throw new Error('Duplicated reference');
}
如果没有$in
Mongo运算符,只需使用一个for
循环,它将以同样的方式结束:
for (let c = 0; c < myJSON.length; c++) {
if (Collection.find({reference: myJSON[c].reference}).count > 1) {
alert(`Reference ${arr} already exists`);
throw new Error('Duplicated reference');
}
}