当前位置: 首页 > 编程笔记 >

MongoDB精确数组匹配

鲁泰宁
2023-03-14
本文向大家介绍MongoDB精确数组匹配,包括了MongoDB精确数组匹配的使用技巧和注意事项,需要的朋友参考一下

对于精确的数组匹配,只需find()在MongoDB中使用。让我们创建一个包含文档的集合-

> db.demo300.insertOne({"Values":[100,200,400]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e4d69d05d93261e4bc9ea4d")
}
> db.demo300.insertOne({"Values":[500,700,900,1000]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e4d69dd5d93261e4bc9ea4e")
}
> db.demo300.insertOne({"Values":[340,670,450,500]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e4d69eb5d93261e4bc9ea4f")
}

find()方法的帮助下显示集合中的所有文档-

> db.demo300.find();

这将产生以下输出-

{ "_id" : ObjectId("5e4d69d05d93261e4bc9ea4d"), "Values" : [ 100, 200, 400 ] }
{ "_id" : ObjectId("5e4d69dd5d93261e4bc9ea4e"), "Values" : [ 500, 700, 900, 1000 ] }
{ "_id" : ObjectId("5e4d69eb5d93261e4bc9ea4f"), "Values" : [ 340, 670, 450, 500 ] }

这是对MongoDB数组匹配的查询-

> db.demo300.find({"Values" : [ 340, 670, 450, 500 ]});

这将产生以下输出-

{ "_id" : ObjectId("5e4d69eb5d93261e4bc9ea4f"), "Values" : [ 340, 670, 450, 500 ] }
 类似资料:
  • 我目前正在Java应用程序上使用MongoDB的驱动程序。假设我将以下两个文档存储在一个集合中: 文件A: 文件B: 现在,我想通过使用key1和key2的值从集合中检索DocumentB的精确匹配,而不返回documenta,而不是_id,因为我事先不知道它。 如果我只是使用DocumentB作为查询(没有_id),Mongo也将返回DocumentA,因为它匹配所有的键和值,不考虑Docume

  • 我正在使用elasticsearch从json字段进行精确短语匹配。我尝试过多种语法,比如multi_match、query_string query_string我正在使用的语法; 我也尝试了过滤器而不是查询,但是过滤器在json上没有给出任何结果。我用于过滤器的语法是; 现在的问题是; 是否可以使用elasticsearch对json执行精确匹配操作?

  • 问题内容: 我有一个简单的RegEx,它应该查找8位数字: 但事实证明,它还匹配9位及更多数字。如何修复此RegEx以精确匹配8位数字? 例如:应匹配12345678,而不应匹配1234567和123456789。 问题答案: 试试这个: 被称为单词边界,它将对您的正则表达式说数字在8之后结束

  • 我正在尝试创建一个Lucene4.10索引。我只想在索引中保存我放入文档的确切字符串,witout标记化。 我在用StandardAnalyzer。 我试图搜索术语“燃料箱容量”@en(包括引号),所以我试图省略它们,并在术语周围添加了另外几个引号,以便让lucene理解我正在搜索整个文本。 如果我打印查询,我会得到:3:“燃料箱容量en”,但我不想拆分@符号上的文本。 我认为我的第一个问题是St

  • 我是否可以在具有的数组中嵌入对象的数组的第二个元素? 结果:

  • 有什么regex我可以用来匹配正好10位数的块吗?例如,我有以下内容: 当给定时,这与匹配,但当给定时,这也与匹配,这是我不想要的。