【问题标题】:Why is this MongoDB selector not working?为什么这个 MongoDB 选择器不起作用?
【发布时间】:2015-08-07 18:48:23
【问题描述】:

我有一个 SimpleSchema 附加到 Meteor.users 具有以下属性:

tags: {
    type: [Object],
    label: "Tags",
    optional: true,   
    }
  },
  'tags.$.name' : {
    type: String,
  },
  'tags.$.correct' : {
    type: Number,
  },
  'tags.$.wrong' : {
    type: Number,
  },

我创建了一个带有单个“标签”对象的用户

"tags" : [
        {
            "name" : "History",
            "correct" : 0,
            "wrong" : 1
        },
    ]

但是当我打电话时

Meteor.users.findOne({
        'tags.$.name' : "History"
      });

它返回undefined。有谁知道我做错了什么?

非常感谢您的帮助。这让我拖延了好几天。 =\

【问题讨论】:

    标签: mongodb meteor mongodb-query database-schema


    【解决方案1】:

    您需要在findOne 语句中指定字段选项。

    这对我有用:

    Meteor.users.findOne({
        'tags.name': "History"
    }, {
        fields: {'tags.$': 1}
    });
    

    【讨论】:

    • 解决方案是,就像您推荐的那样,从选择器中删除 $。另外,字段选项不是必需的。在我的例子中,我不知道标签对象的索引是什么,但是 Mongo 足够聪明,可以找到第一个带有标签属性的结果,该标签属性的对象的名称属性为“历史”...... ..如果这是有道理的。无论如何,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 2011-06-30
    • 2017-11-11
    相关资源
    最近更新 更多