我Collection 了一些文件:

{
    name : 'Peter'
    city : 'New York'
    dogs_owned : 2,
    cats_owned : 1,
}
{
    name : 'Amir'
    city : 'Chicago'
}
{
    name : 'James'
    city : 'Chicago'
    dogs_owned : 3
}
{  
    name : 'Leilani'
    city : 'Chicago'
    cats_owned : 3,
}

我想编写一个Find查询,返回存在多个字段中的一个且满足另一个条件的文档.

具体地说,我想要具有CATS_OWNWN或DOWS_OWNSEN和City=Chicago字段的文档.

因此,查询将返回上例中James和Leilani的文档.使用Mongo的 node 驱动程序.

推荐答案

您需要使用$or&;$exists:

const MongoClient = require('mongodb').MongoClient;
const url = "your_db_or_cluster_url";

MongoClient.connect(url, function (err, db) {
    if (err) throw err;
    const dbo = db.db("your_db_name");
    dbo.collection("your_collection_name").find({
        city: "Chicago",
        $or: [{ dogs_owned: { $exists: true } },
        { cats_owned: { $exists: true } }]}, function (err, result) {
        if (err) throw err;
        console.log(result);
        db.close();
    });
});

Test here:mongoplayground

Note:不要忘记维护适当的索引.

Node.js相关问答推荐

NodeJS缓冲区大小逻辑:为什么默认是8KB,而不仅仅是数据大小?

下一个API路由如何处理多个并发请求?

如果我在 tsx 文件中使用了use client,ssr 会如何发生?

如果我在父文件夹中运行,子进程生成不起作用

我应该转译我的 TypeScript 应用程序吗?

如何防止 Chrome 通过 Selenium 崩溃?

我误解了外键的工作原理吗?使用续集

MongoDB Aggregate - 如何使用前一阶段的值作为下一阶段的字段名称?

Electron 模板(Typescript + Webpack)中的这个 Electron Forge ERROR 是什么?

图像存储在后端文件夹中,但使用 multer 和 react.js 在前端找不到

一个非常奇怪的JavaScript heap out of memory问题

配额超出了每分钟的 Sheets API 写入请求数. node .js

使用 Node.js 在内存中缓冲整个文件

如何从 Redis 保存和检索会话

Connect/Express 中的session和cookieSession中间件有什么区别?

如何监控 node.js 上的网络,类似于 chrome/firefox 开发者工具?

从目录 node Js 中检索文件

使用 Webpack 和 font-face 加载字体

为什么模块级返回语句在 Node.js 中起作用?

使用 Node.js 我得到错误:EISDIR,读取