我正在查询查找精确的数组匹配,并成功地检索了它,但当我try 查找具有不同顺序的值的精确数组时,它失败了.

Example

db.coll.insert({"user":"harsh","hobbies":["1","2","3"]})
db.coll.insert({"user":"kaushik","hobbies":["1","2"]})
db.coll.find({"hobbies":["1","2"]})

2nd Document Retrieved Successfully

db.coll.find({"hobbies":["2","1"]})

Showing Nothing

请帮忙

推荐答案

currently accepted answer不能确保数组中的项完全匹配,只能确保大小相同,并且数组与查询数组至少共享一个项.

例如,查询

db.coll.find({ "hobbies": { "$size" : 2, "$in": [ "2", "1", "5", "hamburger" ] }  });

在这种情况下仍将返回用户kaushik.

要实现精确匹配,需要将$size$all结合起来,如下所示:

db.coll.find({ "hobbies": { "$size" : 2, "$all": [ "2", "1" ] }  });

但请注意,这可能是一个非常昂贵的操作,具体取决于数据的数量和 struct .

Mongodb相关问答推荐

我无法将文档发送到我的MongoDB集合,因为它告诉我使文档无效

筛选出嵌套数组中的记录Mongo DB聚合

在MongoDB中获取所有帖子时如何获取相关用户信息

Mongoose updateMany 以及 Where 和 orWhere?

如何在 MongoDB 中对字段进行自定义排序

MongoDB 使用 pymongo 收集 500K 文档的写入速度很差

在 MongoDB 中使用 findOneAndUpdate 有条件地更新/更新嵌入式数组

MongoDB 使用自定义表达式或函数进行排序

我怎样才能更快地scrape

mongodb,pymongo,aggregate聚合给出奇怪的输出

如何使用node.js http服务器从mongodb返回大量行?

如何使用 MongoDB Compass 对数据进行排序

如何在 Rails 中混合使用 mongodb 和传统数据库?

mongoose 使用 $cond 中的 $exists 聚合

一起使用 MongoDB 和 Neo4j

我们如何使用spring boot为mongodb创建自动生成的字段

Java + MongoDB:更新文档中的多个字段

MongoDB 中的多个 $inc 更新

处理Mongodb连接的正确方法是什么?

如何使用 mongoose 连接到 mongoDB Atlas