我是mongodb的新手。我正在以下架构中保存用户推荐。我正在保存用户喜欢该业务的日期。如果用户数组中存在用户ID(uid),我只想返回true / false。
const userSchema = new Schema({
uid: { type: String},
createdAt: { type: Date, default: Date.now() },
_id: false
});
const businessRecommendationsSchema = new Schema({
businessID: { type: String, unique: true},
users: [userSchema]
},{
timestamps: true
});
我不希望返回整个对象(如果存在),但只返回false。请帮忙。
示例数据:
{
"businessID": "35M1L66a8YXzKmDYvbya3sHGJkH2",
"updatedAt": {
"$date": "2017-09-27T10:03:01.866Z"
},
"createdAt": {
"$date": "2017-09-27T10:03:01.866Z"
},
"users": [
{
"uid": "PFwwUecwpFhhWCbJEaFjmfnGOix1",
"createdAt": {
"$date": "2017-09-27T10:03:01.867Z"
}
}
]
}
我尝试了下面的查询,但这只有在简单数组不是对象数组时才有效。
Business.aggregate()
.match({ businessID: req.params.businessID })
.lookup({ from : 'businessrecommendations', localField: 'businessID', foreignField: 'businessID',
as: 'recommendations' })
.project({_id: 0, businessID: 1, businessName: 1,
recommendedBy: { $arrayElemAt: [ "$recommendations", 0]}})
.project({_id: 0, businessID: 1, businessName: 1,
recommended: { $in : [req.query.uid, "$recommendedBy.users"]}});