各位老大,小弟使用云开发,数据库存了这样一个结构的数据:
room:{
1:{
name:'大床房'
price:200
}
2:{
name:'标准间'
price:300
}
}
我想只取出price字段,该怎么写呢?因为room里有一个不固定的编号(1、2……),要跳过这个编号去取 price,下面这样写实现不了,在field那里,似乎该写 'room.{}.price'类似这样,跳过room的编号,具体该怎么写才行呢?乞高手指点。
db.collection('host_info').where({
OpenID: OpenID
}).field({
'_id': true,
'room.price': true,
})
.get().then(res => {})
是要返回这种吗?
[100,200,..]
room:{
1:{
price:200
}
2:{
price:300
}
}
代码:
db.collection('test').aggregate()
.match({
OpenID: '1111'
})
.project({
roomarray: $.objectToArray('$room')
})
.project({
newroomarray: $.map({
input: '$roomarray',
in: {
'k':'$$this.k',
'v' :{
'price':"$$this.v.price",
}
}
})
})
.project({
room: $.arrayToObject('$newroomarray')
})
.end()
这表结构设计的,作死小能手啊。建议能改还是改吧。
如果非要在这结构上查询,感觉只能用到:
AggregateCommand.objectToArray
具体自己研究吧。费脑的事。