$elemMatch使用问题

来源:3-7 【读取文档】动手实战 - 数组操作符,运算操作符和文档游标

飘零的狐狸

2019-07-02

$elemMatch作用为匹配数组字段中至少存在一个值满足筛选条件的文档,那那为什么

db.test.find( { contact:{$elemMatch:{ $gt: "500000", $eq:"US"}} } )
可以匹配到
{ “_id” : ObjectId(“5d1af2abd581a14d58484df2”), “name” : “liudi”, “age” : “25”, “contact” : [ “456789”, “Alabama”, “US” ] }

写回答

2回答

Stannum

2019-07-06

同学你好~在你的查询语句里,你是把"500000"作为一个字符串在进行比较的。由于文档中的"contact"字段包含一个元素"US",既等于查询字符串"US",又大于查询字符串"500000"(字符串之间比较各个字符的ascii值),这篇文档自然就被返回了~

0
1
飘零的狐狸
非常感谢!
2019-07-08
共1条回复

飘零的狐狸

提问者

2019-07-02

elemMatch 里面是不是or的关系 还是and的关系

0
1
Stannum
是and的关系
2019-07-06
共1条回复

玩转MongoDB4.0(最新版) 从入门到实践

30%理论+70%实战,用实操检验真理,一门让你事半功倍的入门进阶课

1138 学习 · 197 问题

查看课程