查询数据

最近更新时间:2020-09-16 17:31:52

使用数据库 API 提供的 where 方法我们可以构造复杂的查询条件完成复杂的查询任务。在本节中我们还是使用 读取数据 中使用的示例数据。

查询指令

假设我们需要查询进度大于 30% 的待办事项,那么传入对象表示全等匹配的方式就无法满足了,这时就需要用到查询指令。数据库 API 提供了大于、小于等多种查询指令,这些指令都暴露在 db.command 对象上。例如查询进度大于 30% 的待办事项:

Web

const cloudbase = require("@cloudbase/js-sdk");

const app = cloudbase.init({
  env: "xxxx"
});
// 1. 获取数据库引用
var db = app.database();

const _ = db.command;
db.collection("todos")
  .where({
    // gt 方法用于指定一个 "大于" 条件,此处 _.gt(30) 是一个 "大于 30" 的条件
    progress: _.gt(30)
  })
  .get()
  .then((res) => {
    console.log(res.data);
  });

小程序

// 1. 获取数据库引用
const db = wx.cloud.database();

const _ = db.command;
db.collection("todos")
  .where({
    // gt 方法用于指定一个 "大于" 条件,此处 _.gt(30) 是一个 "大于 30" 的条件
    progress: _.gt(30)
  })
  .get()
  .then((res) => {
    console.log(res.data);
  });

Node.js

const cloudbase = require("@cloudbase/node-sdk");

const app = cloudbase.init({});
// 1. 获取数据库引用
const db = app.database();

const _ = db.command;

exports.main = async (event, context) => {
  const res = await db
    .collection("todos")
    .where({
      // gt 方法用于指定一个 "大于" 条件,此处 _.gt(30) 是一个 "大于 30" 的条件
      progress: _.gt(30)
    })
    .get();
  return {
    res
  };
};

API 提供了以下查询指令:

查询指令 说明
eq 等于
neq 不等于
lt 小于
lte 小于或等于
gt 大于
gte 大于或等于
in 字段值在给定数组中
nin 字段值不在给定数组中

具体的查询指令 API 文档可参考各 SDK API 参考。

逻辑指令

除了指定一个字段满足一个条件之外,我们还可以通过指定一个字段需同时满足多个条件,例如我们 查询进度小于或等于 50%颜色为白色或黄色 的待办事项:

Web

const cloudbase = require("@cloudbase/js-sdk");

const app = cloudbase.init({
  env: "xxxx"
});
// 1. 获取数据库引用
var db = app.database();

const _ = db.command;
db.collection("todos")
  .where(
    _.or([
      {
        progress: _.lte(50)
      },
      {
        style: {
          color: _.in(["white", "yellow"])
        }
      }
    ])
  )
  .get()
  .then((res) => {
    console.log(res.data);
  });

小程序

// 1. 获取数据库引用
const db = wx.cloud.database();

const _ = db.command;
db.collection("todos")
  .where(
    _.or([
      {
        progress: _.lte(50)
      },
      {
        style: {
          color: _.in(["white", "yellow"])
        }
      }
    ])
  )
  .get()
  .then((res) => {
    console.log(res.data);
  });

Node.js

const cloudbase = require('@cloudbase/node-sdk');

const app = cloudbase.init({})
// 1. 获取数据库引用
const db = app.database()

const _ = db.command

exports.main = async (event, context) => {
  const res = await db.collection('todos')
  .where(
    _.or([
      {
        progress: _.lte(50)
      },
      {
        style: {
          color: _.in(['white', 'yellow'])
        }
      }
    ])
  )
  .get()

  return {
    res
  }
}

具体的查询指令 API 文档可参考各 SDK API 参考。

目录