检查mongo文档字段是否存在

时间:2015-07-26 23:09:34

标签: mongodb meteor mongodb-query

我想查看字段" imageUrl"从表单插入到MongoDb集合中。

如果它有值,我想返回URL,否则返回false。我不习惯Mongo,并想知道我是如何做到这一点的。并非每个条目都有imageUrl字段,但有些字段有。所以我需要检查每个文档是否存在。

这是我的帮手,我想要逻辑:

Template.CatchesList.helpers({
  catches: function () {
    return Catches.find({}, {sort: {date: -1}});
  },

  image: function() {
    if (this.imageURL) // Need proper logic here
      return true;
    else
      return false;
  }
});

在我的模板中:

{{#if image}}
    <td><img width="100" src="{{imageUrl}}"></td>
{{/if}}

2 个答案:

答案 0 :(得分:3)

MongoDB有$exists运算符来过滤文档中不存在该属性的结果。因此,您可以将查询更改为:

return Catches.find({ "imageUrl": { "$exists": true }}, { "sort": { "date": -1 }});

然后只返回具有该属性的项目。

如果您只是在讨论模板,那么对该字段的简单条件测试将在逻辑上返回它存在或不存在的位置:

{{#each catches}}
    {{> catch }}
{{/each}}

然后:

<template name="catch">
    <tr>
        <!-- other fields -->
        <td>{{#if imageUrl}}<img width="100" src="{{imageUrl}}">{{/if}}</td>
    </tr>
</template>

只有{{#if}}{{/if}}中包含的逻辑才能实际呈现。

答案 1 :(得分:1)

我在一个应用程序中这样做,它对我有用:

    Courses.find({owned_by_contract:user_contract._id}).forEach(function(doc){
        var foo = ("your_field_name" in doc) ? doc.course_objective_english.value:"N/A";
    }):