关于数组比较查询的问题

发布于 2022-09-12 22:36:50 字数 889 浏览 18 评论 0

db.inventory.insertMany([
   { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] },
   { item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14, 21 ] },
   { item: "paper", qty: 100, tags: ["red", "blank", "plain"], dim_cm: [ 14, 21 ] },
   { item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] },
   { item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ] }
]);

拿官网的例子来说
当使用{ tags: "red" }{ tags: {$eq: "red"} }是查询tags中,任一元素等于“red”。
当使用{ tags:{$ne: "red"} }却是查询tags中,所有元素不等于“red”。
感觉有些怪,不知道这个理解对不对。
然后又提供了一个操作符$elemMatch可以用来指定任一元素满足条件。也就是说{ tags: {$elemMatch:{$ne: "red"} } }任一元素不等于“red”。

那如果我想使用所有元素的比较查询,应该怎么办?比如所有的dim_cm都大于20。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

酒与心事 2022-09-19 22:36:50

去找了下好像也没找到。但是可以换个思路,有一个小于就不满足就好了db.inventory.find( { dim_cm: {"$not":{ $lt: 25 }} } )

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文