下面代码片段在“云开发控制台-高级操作”中执行的结果 和 “云函数”中执行的结果不一样:前者能查询到结果,而后者不能。
如果把下面这个条件去掉,则查询结果一致。所以推断是这个条件在云函数中执行有问题
price: _.gte(0).and(_.lte(2000))
代码片段:
db.collection("house")
.aggregate()
.lookup({
from: "room",
localField: "_id",
foreignField: "houseId",
as: "room",
}).match({
room:
_.elemMatch({
status: 2,
price: _.gte(0).and(_.lte(2000))
})}
).project({
houseId: 1,
"room.status":1,
"room.price":1,
})
.end();
换另外一个方式解决了。