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
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满足就行。
_openid的权限问题?
where({
a2: _.elemMatch({price:_.gte(10)})
})