如何在MongoDB中查询一个布尔值的字段,并返回一个布尔值,无论它是true还是false

How to query a field in MongoDB with a boolean value and return a boolean whether it's true or false

本文关键字:一个 布尔值 true false 还是 返回 MongoDB 字段 查询      更新时间:2023-09-26

查看我的简单集合:

{_id: "01",
  name: "Jimmy",
  canDrive: false }

一旦找到document,我想做的是操纵DOM并显示<div class="driving-tutorial>,如果字段canDrive值为false,并隐藏它,如果值为true

流星:

Template.profile.rendered = function() {
    if (<query>,<field> == true){
        $('.driving-tutorial').hide();
    else {
        $('.driving-tutorial').show(); }

您可以使用 findOne() 方法实现此逻辑,该方法查找与参数中的选择器/查询对象匹配的第一个文档。因此,您可以使用Mongo选择器调用 findOne() , Mongo选择器是一个对象,它指定所需文档的一组属性以匹配文档。例如,这个选择器

var doc = Model.findOne({ canDrive: false });

将匹配此文档

{
    _id: "01",
    name: "Jimmy",
    canDrive: false 
}

然后,您可以在模板函数中使用上述逻辑来检查文档和字段的存在,同时要记住,如果 findOne() 未能找到匹配的文档,则返回null,这通常发生在文档尚未加载或已从集合中删除的情况下:

Template.profile.rendered = function() {
    var doc = Model.findOne({ canDrive: false });
    if (doc && !doc.canDrive){
        $('.driving-tutorial').show();
    else {
        $('.driving-tutorial').hide(); 
    }
}

你也可以使用jquery toggle() 方法的第二个版本,它接受一个布尔参数。如果该参数为true,则显示匹配的元素;如果是false,则元素被隐藏:

Template.profile.rendered = function() {
    var doc = Model.findOne({ canDrive: false }),
        canDrive = (doc && !doc.canDrive);
    $('.driving-tutorial').toggle(canDrive);
}