ca, 试了这种写法 "a2.price", 就通过了。。。 那就先这样吧 db.collection("test") .where({ "a2.price": _.gte(10).lte(10) }) .get() [图片] 参考 https://docs.mongodb.com/v4.2/tutorial/query-array-of-documents/ db.inventory.find( { "instock.qty": { $gt: 10, $lte: 20 } } ) 注: 使用”a2.price" 和 a2: _.elemMatch{} 在查询逻辑是不一样的, 但我的业务上可以这么”处理“先,任何一个元素的field满足就行。
对象数组 使用 elemMatch + _.and 查询结果为空(不正确)1 测试数据 及 查询代码 {"_id":"5b049cc8622b232d102331c1093008a3","array":[100.0,200.0],"a2":[{"price":10.0}]} {"_id":"bf4a0bf2622b237613f4e3a416172934","array":[60.0,80.0],"a2":[{"price":100.0}]} db.collection("test") // 返回 a2数组中 匹配 price 大于等于10且小于等于100 的记录 .where({ a2: _.elemMatch({price:_.and(_.gte(10), _.lte(100))}) }) .get() 2 微信开发者工具上查询能返回正确结果 [图片] 3 腾讯云-云开发 控制台 及 云函数上相同的代码 返回为空 [图片] wx-server-sdk : 2.6.0 云函数版本node12
2022-03-12