首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在嵌套字段\ $eq上使用猫鼬$operators

在嵌套字段\ $eq上使用猫鼬$operators
EN

Stack Overflow用户
提问于 2018-01-05 23:37:45
回答 1查看 503关注 0票数 0

我想查询DB并返回一组文档,其中选定的嵌套字段等于true。作为一个人为的例子:让我们假设我有Facebook用户,他们的数据以这种格式存储。

代码语言:javascript
复制
const UserSchema = new Schema({
  name: String, 
  age: Number, 
  permissions: {
    allow_comments: Boolean, 
    allow_likes: Boolean,
    allow_shares: Boolean
  }
})

我想返回所有将permissions.allow_likes设置为true的用户。注意,它不是一个完整的子文档,它只是一个包含一些数据的对象(也许这很糟糕,idk)。

我环顾四周,没有发现什么。所以,我试了一下:

代码语言:javascript
复制
UserModel.find({permissions: {allow_likes: {$eq: true}}})
  .then(users => console.log(users));   // returns []; 

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2018-01-05 23:52:45

我不知道您是如何使用模式和模型的,但我认为您做得不对。在本例中,我将使用一个单独的文件来存储这样的用户模式(/schemas/user.js):

代码语言:javascript
复制
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);

在此之后,要使用它,您可以执行以下操作:

代码语言:javascript
复制
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);
      }
   }

);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48122786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档