我想查询数据库并返回一组文档,其中选定的嵌套字段等于true
。举个人为的例子:假设我有Facebook用户,他们的数据以这种格式存储。
const UserSchema = new Schema({
name: String,
age: Number,
permissions: {
allow_comments: Boolean,
allow_likes: Boolean,
allow_shares: Boolean
}
})
我想返回所有已permissions.allow_likes
设置为 true
的用户。请注意,它不是一个完整的子文档,它只是一个包含一些数据的对象(也许这很糟糕,idk(。
我环顾四周,没有找到什么。然后,我尝试了这个:
UserModel.find({permissions: {allow_likes: {$eq: true}}})
.then(users => console.log(users)); // returns [];
提前感谢!
我不知道
你是如何使用模式和模型的,但我认为你做得不对。对于这种情况,我会使用一个单独的文件来存储用户模式,如下所示(/schemas/user.js(:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userSchema = new Schema({
name: String,
age: Number,
permissions: {
allow_comments: Boolean,
allow_likes: Boolean,
allow_shares: Boolean
});
module.exports= mongoose.model('User',userSchema);
之后,要使用它,您可以执行以下操作:
var userModel = require('../schemas/user.js')
var mongoose = require('mongoose');
userModel.find(
{
permissions: {allow_likes: true}
},(err,results) => {
if (err) {
//well you got an error
}
if (results)
{
console.log("Results: "+results);
}
}
);