Files

573 lines
30 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<meta name="theme-color" content="#222"><meta name="generator" content="Hexo 6.3.0">
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
<link rel="mask-icon" href="/images/logo.svg" color="#222">
<link rel="stylesheet" href="/css/main.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.0/css/all.min.css" integrity="sha256-VHqXKFhhMxcpubYf9xiWdCiojEbY9NexQ4jh8AxbvcM=" crossorigin="anonymous">
<script class="next-config" data-name="main" type="application/json">{"hostname":"toozhao.com","root":"/","images":"/images","scheme":"Muse","darkmode":false,"version":"8.28.0","exturl":false,"sidebar":{"position":"left","width_expanded":320,"width_dual_column":240,"display":"post","padding":18,"offset":12,"b2t":true,"scrollpercent":true},"hljswrap":true,"codeblock":{"theme":{"light":"default","dark":"stackoverflow-dark"},"prism":{"light":"prism","dark":"prism-dark"},"copy_button":{"enable":true,"style":"mac"},"fold":{"enable":false,"height":500},"language":false},"bookmark":{"enable":true,"color":"#222","save":"auto"},"mediumzoom":true,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":false,"async":false,"duration":200,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"prism":false,"i18n":{"placeholder":"搜索...","empty":"没有找到任何搜索结果:${query}","hits_time":"找到 ${hits} 个搜索结果(用时 ${time} 毫秒)","hits":"找到 ${hits} 个搜索结果"},"path":"/search.xml","localsearch":{"enable":true,"top_n_per_article":5,"unescape":false,"preload":false,"trigger":"auto"}}</script><script src="/js/config.js" defer></script>
<meta name="description" content="今天想要分享是使用node.js来连接并操作mongodb数据库实现基本的增删查改操作。 首先我们需要在node.js下安装mongodb争对node的驱动。 npm install mongodb 下面就可以开始写代码了。首先当然是在node代码引用mongodb: 1var mongodb &#x3D; require(&quot;mongodb&quot;); 其次就是连接到mongodb数据库se">
<meta property="og:type" content="article">
<meta property="og:title" content="Node.js操作Mongodb(1)">
<meta property="og:url" content="https://toozhao.com/2012/10/22/nodejs-mongo-one/">
<meta property="og:site_name" content="大染志">
<meta property="og:description" content="今天想要分享是使用node.js来连接并操作mongodb数据库实现基本的增删查改操作。 首先我们需要在node.js下安装mongodb争对node的驱动。 npm install mongodb 下面就可以开始写代码了。首先当然是在node代码引用mongodb: 1var mongodb &#x3D; require(&quot;mongodb&quot;); 其次就是连接到mongodb数据库se">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="2012-10-22T13:00:00.000Z">
<meta property="article:modified_time" content="2026-08-04T10:47:21.904Z">
<meta property="article:author" content="Junv">
<meta property="article:tag" content="javascript">
<meta property="article:tag" content="mongodb">
<meta property="article:tag" content="Node.js">
<meta name="twitter:card" content="summary">
<link rel="canonical" href="https://toozhao.com/2012/10/22/nodejs-mongo-one/">
<script class="next-config" data-name="page" type="application/json">{"sidebar":"","isHome":false,"isPost":true,"lang":"zh-CN","comments":true,"permalink":"https://toozhao.com/2012/10/22/nodejs-mongo-one/","path":"2012/10/22/nodejs-mongo-one/","title":"Node.js操作Mongodb(1)"}</script>
<script class="next-config" data-name="calendar" type="application/json">""</script>
<title>Node.js操作Mongodb(1) | 大染志</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js" integrity="sha256-XL2inqUJaslATFnHdJOi9GfQ60on8Wx1C2H8DYiN1xY=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/medium-zoom/1.1.0/medium-zoom.min.js" integrity="sha256-ZgMyDAIYDYGxbcpJcfUnYwNevG/xi9OHKaR/8GK+jWc=" crossorigin="anonymous" defer></script>
<script src="/js/utils.js" defer></script><script src="/js/sidebar.js" defer></script><script src="/js/next-boot.js" defer></script><script src="/js/bookmark.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-generator-searchdb/1.5.0/search.js" integrity="sha256-xFC6PJ82SL9b3WkGjFavNiA9gm5z6UBxWPiu4CYjptg=" crossorigin="anonymous" defer></script>
<script src="/js/third-party/search/local-search.js" defer></script>
<style>
/* =========================================================
Toozhao blog custom styles (injected via head.njk)
阅读体验优化 — 微信读书风格
========================================================= */
html { scroll-behavior: smooth; }
/* 主内容阅读宽度 */
.post-block, .posts-expand .post-block {
max-width: 760px;
}
.post-title {
font-size: 1.7em;
font-weight: 700;
letter-spacing: 0.01em;
}
.post-meta { color: #999; font-size: 0.9em; }
.post-body {
font-size: 1.05em;
line-height: 1.9;
letter-spacing: 0.02em;
color: #333;
}
.post-body p {
margin: 1.1em 0;
text-align: justify;
text-justify: inter-ideograph;
}
.post-body h1, .post-body h2, .post-body h3, .post-body h4, .post-body h5, .post-body h6 {
line-height: 1.4;
margin-top: 1.6em;
margin-bottom: 0.8em;
font-weight: 600;
color: #222;
}
.post-body h2::before, .post-body h3::before, .post-body h4::before {
content: '';
display: inline-block;
width: 4px;
height: 0.9em;
background: #4a90d9;
border-radius: 2px;
margin-right: 10px;
vertical-align: -0.08em;
}
.post-body img {
border-radius: 8px;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
margin: 0.6em auto;
display: block;
max-width: 100%;
}
.post-body blockquote {
border-left: 4px solid #4a90d9;
background: rgba(74, 144, 217, 0.06);
margin: 1.4em 0;
padding: 0.8em 1.2em;
border-radius: 0 8px 8px 0;
color: #555;
}
.post-body blockquote p { margin: 0.4em 0; }
.post-body a {
color: #2d6cdf;
border-bottom: 1px solid rgba(45, 108, 223, 0.3);
transition: color 0.2s, border-color 0.2s;
}
.post-body a:hover { color: #1a4fae; border-bottom-color: #1a4fae; }
.post-body code {
background: rgba(0, 0, 0, 0.05);
border-radius: 4px;
padding: 2px 6px;
font-size: 0.9em;
color: #c7254e;
}
.post-body table {
border-collapse: collapse;
margin: 1.2em auto;
font-size: 0.95em;
}
.post-body table th, .post-body table td {
border: 1px solid #ddd;
padding: 8px 14px;
}
.post-body table th { background: #f5f7fa; font-weight: 600; }
.post-body table tr:nth-child(even) { background: #fafbfc; }
.post-body ul, .post-body ol { padding-left: 1.6em; margin: 0.8em 0; }
.post-body ul li, .post-body ol li { margin: 0.35em 0; }
.post-body hr {
border: none;
border-top: 1px dashed #ccc;
margin: 2em auto;
width: 60%;
}
/* 暗色模式(跟随系统,不依赖 NexT darkmode class */
@media (prefers-color-scheme: dark) {
body { background: #1b1f24; color: #c8cdd3; }
.post-body { color: #c8cdd3; }
.post-body h1, .post-body h2, .post-body h3, .post-body h4, .post-body h5, .post-body h6 { color: #e8eaed; }
.post-body blockquote { background: rgba(74, 144, 217, 0.1); color: #9aa5b1; }
.post-body code { background: rgba(255, 255, 255, 0.1); color: #e88388; }
.post-body table th, .post-body table td { border-color: #3a3f45; }
.post-body table th { background: #2d3238; }
.post-body table tr:nth-child(even) { background: #262a2f; }
.post-meta { color: #777; }
}
::selection { background: rgba(74, 144, 217, 0.25); }
/* 字体调节按钮 */
.font-size-control {
position: fixed;
right: 18px;
bottom: 90px;
z-index: 1000;
background: rgba(0, 0, 0, 0.65);
color: #fff;
border-radius: 20px;
padding: 6px 4px;
display: flex;
flex-direction: column;
gap: 2px;
user-select: none;
}
.font-size-control button {
background: none;
border: none;
color: #fff;
font-size: 13px;
cursor: pointer;
padding: 3px 8px;
opacity: 0.85;
}
.font-size-control button:hover { opacity: 1; }
</style>
<noscript>
<link rel="stylesheet" href="/css/noscript.css">
</noscript>
</head>
<body itemscope itemtype="http://schema.org/WebPage">
<div class="headband"></div>
<main class="main">
<div class="column">
<header class="header" itemscope itemtype="http://schema.org/WPHeader"><div class="site-brand-container">
<div class="site-nav-toggle">
<div class="toggle" aria-label="切换导航栏" role="button">
<span class="toggle-line"></span>
<span class="toggle-line"></span>
<span class="toggle-line"></span>
</div>
</div>
<div class="site-meta">
<a href="/" class="brand" rel="start">
<i class="logo-line"></i>
<p class="site-title">大染志</p>
<i class="logo-line"></i>
</a>
<p class="site-subtitle" itemprop="description">Junv's blog</p>
</div>
<div class="site-nav-right">
<div class="toggle popup-trigger" aria-label="搜索" role="button">
<i class="fa fa-search fa-fw fa-lg"></i>
</div>
</div>
</div>
<nav class="site-nav">
<ul class="main-menu menu"><li class="menu-item menu-item-home"><a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a></li><li class="menu-item menu-item-tags"><a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>标签</a></li><li class="menu-item menu-item-categories"><a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类</a></li><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档</a></li><li class="menu-item menu-item-about"><a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>关于</a></li>
<li class="menu-item menu-item-search">
<a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
</a>
</li>
</ul>
</nav>
<div class="search-pop-overlay">
<div class="popup search-popup">
<div class="search-header">
<span class="search-icon">
<i class="fa fa-search"></i>
</span>
<div class="search-input-container">
<input autocomplete="off" autocapitalize="off" maxlength="80"
placeholder="搜索..." spellcheck="false"
type="search" class="search-input">
</div>
<span class="popup-btn-close" role="button">
<i class="fa fa-times-circle"></i>
</span>
</div>
<div class="search-result-container">
<div class="search-result-icon">
<i class="fa fa-spinner fa-pulse fa-5x"></i>
</div>
</div>
</div>
</div>
</header>
<aside class="sidebar">
<div class="sidebar-inner sidebar-overview-active">
<ul class="sidebar-nav">
<li class="sidebar-nav-toc">
文章目录
</li>
<li class="sidebar-nav-overview">
站点概览
</li>
</ul>
<div class="sidebar-panel-container">
<!--noindex-->
<div class="post-toc-wrap sidebar-panel">
</div>
<!--/noindex-->
<div class="site-overview-wrap sidebar-panel">
<div class="site-author animated" itemprop="author" itemscope itemtype="http://schema.org/Person">
<img class="site-author-image" itemprop="image" alt="Junv"
src="/images/avatar.gif">
<p class="site-author-name" itemprop="name">Junv</p>
<div class="site-description" itemprop="description">分享编程、运维、生活与思考</div>
</div>
<div class="site-state-wrap animated">
<nav class="site-state">
<div class="site-state-item site-state-posts">
<a href="/archives/">
<span class="site-state-item-count">310</span>
<span class="site-state-item-name">日志</span>
</a>
</div>
<div class="site-state-item site-state-tags">
<a href="/tags/">
<span class="site-state-item-count">249</span>
<span class="site-state-item-name">标签</span></a>
</div>
</nav>
</div>
<div class="links-of-author animated">
<span class="links-of-author-item">
<a href="https://github.com/wahyd4" title="GitHub → https:&#x2F;&#x2F;github.com&#x2F;wahyd4" rel="noopener me" target="_blank"><i class="fab fa-github fa-fw"></i>GitHub</a>
</span>
</div>
<div class="cc-license animated" itemprop="license">
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" class="cc-opacity" rel="noopener" target="_blank"><img src="https://cdnjs.cloudflare.com/ajax/libs/creativecommons-vocabulary/2020.11.3/assets/license_badges/small/by_nc_sa.svg" alt="Creative Commons"></a>
</div>
</div>
</div>
</div>
</aside>
</div>
<div class="main-inner post posts-expand">
<div class="post-block">
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="https://toozhao.com/2012/10/22/nodejs-mongo-one/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="Junv">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="大染志">
<meta itemprop="description" content="分享编程、运维、生活与思考">
</span>
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="name" content="Node.js操作Mongodb(1) | 大染志">
<meta itemprop="description" content="">
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
Node.js操作Mongodb(1)
</h1>
<div class="post-meta-container">
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2012-10-23 00:00:00" itemprop="dateCreated datePublished" datetime="2012-10-23T00:00:00+11:00">2012-10-23</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2026-08-04 20:47:21" itemprop="dateModified" datetime="2026-08-04T20:47:21+10:00">2026-08-04</time>
</span>
</div>
</div>
</header>
<div class="post-body" itemprop="articleBody"><p>今天想要分享是使用node.js来连接并操作mongodb数据库实现基本的增删查改操作。</p>
<p>首先我们需要在node.js下安装mongodb争对node的驱动。</p>
<p>npm install mongodb</p>
<p>下面就可以开始写代码了。首先当然是在node代码引用mongodb:</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">var mongodb = require(&quot;mongodb&quot;);</span><br></pre></td></tr></table></figure>
<p>其次就是连接到mongodb数据库server:</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">var server = new mongodb.Server(&#x27;localhost&#x27;,27017,&#123;auto_reconnect:true&#125;);</span><br></pre></td></tr></table></figure>
<p>其中第一、二分参数分别是IP地址和端口,由于我们这里没有设计到验证,因此便不需要验证参数。最后的参数是一个对象,我们设置了一个属性auto_reconnect为true,就表示如果当程序与mongodb失去连接便回自动重连。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">var server = new mongodb.Server(&#x27;localhost&#x27;,27017,&#123;auto_reconnect:true&#125;,10);</span><br></pre></td></tr></table></figure>
<p>通常情况下我们可以不管最后一个参数,这个参数是线程池的数量,系统默认的设置是5,也就是说可以同时支持打开5个数据库连接,并进行操作。当然我们可以根据自己需要设置希望的值。</p>
<p>然后就是获取或者创建一个DB实例。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">var db = new mongodb.Db(&quot;mydb2&quot;,server);</span><br></pre></td></tr></table></figure>
<p>第一个参数需要传入被数据库的名称,如果数据库不存在系统会创建该数据库,当时不是现在,而是当我们试图打开数据库的时候。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">db.open(function(err,db)&#123;</span><br><span class="line">if(err)&#123;</span><br><span class="line">console.log(err);</span><br><span class="line">&#125;</span><br><span class="line">if(!err)&#123;</span><br><span class="line">console.log(&quot;we are connected!&quot;);</span><br><span class="line">&#125;</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure>
<p>我们想要对数据库进行的相关操作都是在db.open()的回调函数内完成的。即是说我们对数据库的操作需要在数据库被打开的情况下完成。<br>在mongodb中collection可以看做是我们平时所用的关系型数据库中的table(表),我们可以通过显式或者隐式的方式来创建collection:<br><strong>显式</strong>即是使用db.createCollection()创建。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">db.createCollection(&#x27;test&#x27;,&#123;safe:true&#125;,function(err,collection)&#123;</span><br><span class="line">if(err)&#123;</span><br><span class="line">console.log(err);</span><br><span class="line">&#125;else&#123;</span><br><span class="line">console.log(&quot;created successful!&quot;);</span><br><span class="line">&#125;</span><br><span class="line"> &#125;);</span><br></pre></td></tr></table></figure>
<p>safe:true如果我们使用了这个参数即表示,如果当我们想要创建的collection已经存在时,则会报错,如果去掉则不会。<br>隐式则是我们在使用某个collection的时候,系统发现没有该collection,则会自动创建。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">db.collection(&#x27;fuck&#x27;,function(err,collection)&#123;</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure>
<p>这个时候如果我们使用safe:true,当程序发现我们希望使用的collection不存在则会报错。通过这段代码,我们可以在该回调函数中执行所有我们对该collection的操作。</p>
<p>插入数据:</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">//插入单条数据</span><br><span class="line">collection.insert(&#123;&#x27;name&#x27;:&#x27;tom&#x27;&#125;,function(err,result)&#123;&#125;);</span><br><span class="line">//插入数组</span><br><span class="line">var array = [&#123;&#x27;name&#x27;:&#x27;mary&#x27;&#125;,&#123;&#x27;name&#x27;:&#x27;lily&#x27;,&#x27;age&#x27;:20&#125;];</span><br><span class="line">collection.insert(array,&#123;safe:true&#125;,function(err,result)&#123;</span><br><span class="line"> if(err) throw err;</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure>
<p>当我们一次插入或者在以后的删除、更新多条数据时,我们都应该使用safe:true,以保证数据的完整性和一致性,如果在插入数组的过程中某些数据未能成功插入,即会报错。<br>更新数据:</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">collection.update(&#123;&#x27;name&#x27;:&#x27;tom&#x27;&#125;,&#123;$set:&#123;&#x27;name&#x27;:&#x27;lily&#x27;,&#x27;age&#x27;:100&#125;&#125;,function(err,result)&#123;</span><br><span class="line">if(err) throw err;</span><br><span class="line">if(!err)&#123;</span><br><span class="line">console.log(&quot;update successful&quot;);</span><br><span class="line">&#125;</span><br><span class="line"> &#125;);</span><br></pre></td></tr></table></figure>
<p>第一个参数为我们定位目标的属性,这里即是我们更新所有名字为tom的数据,$set的意思则是我们将其更换其他的数据。<br>删除数据:</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">//删除用户名为tom的数据</span><br><span class="line">collection.remove(&#123;&#x27;name&#x27;:&#x27;tom&#x27;&#125;,&#123;safe:true&#125;,function(err,result)&#123;</span><br><span class="line">if(err) console.log(err);</span><br><span class="line"></span><br><span class="line">&#125;);</span><br><span class="line"></span><br><span class="line">//删除集合内的所有数据</span><br><span class="line"></span><br><span class="line">collection.remove();</span><br></pre></td></tr></table></figure>
<p>查找数据:</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line">//查找一条符合的数据</span><br><span class="line">collection.findOne(&#123;&#x27;name&#x27;:&#x27;tom&#x27;&#125;,function(err,result)&#123;</span><br><span class="line">if (err) throw err;</span><br><span class="line">console.log(result);</span><br><span class="line"> &#125;);</span><br><span class="line"></span><br><span class="line">//查找多条数据,将结果集转换成数组。</span><br><span class="line"></span><br><span class="line">collection.find().toArray(function(err,items)&#123;</span><br><span class="line">if(err) throw err;</span><br><span class="line"></span><br><span class="line">//遍历数据</span><br><span class="line"></span><br><span class="line">for(item in array)&#123;</span><br><span class="line"> console.log(array[item]);</span><br><span class="line"> &#125;</span><br><span class="line"> &#125;);</span><br><span class="line"></span><br><span class="line">//另外一种查找多条数据的方式是使用流式来处理。</span><br><span class="line"></span><br><span class="line">var stream = collection.find().streamRecords();</span><br><span class="line"></span><br><span class="line">//监听获取数据</span><br><span class="line"> stream.on(&quot;data&quot;,function(item)&#123;</span><br><span class="line"> console.log(item);</span><br><span class="line"> &#125;);</span><br><span class="line"></span><br><span class="line">//当数据读取完毕时,执行的方法。</span><br><span class="line"> stream.on(&quot;end&quot;,function()&#123;</span><br><span class="line"> console.log(&quot;stream is end&quot;);</span><br><span class="line"> &#125;);</span><br></pre></td></tr></table></figure>
<p>当然我们这里使用的查找数据的方式很简单,没有涉及到高级的查询语句,比如限制返回数据的条数limit(),这些都是可以使用的。大家可以从下面的文档中获取到更多的信息。</p>
<p>完整代码下载:</p>
<p><a target="_blank" rel="noopener" href="https://github.com/wahyd4/node.js-mongodb-demo">https://github.com/wahyd4/node.js-mongodb-demo</a><br>参考文档:<br><a target="_blank" rel="noopener" href="http://mongodb.github.com/node-mongodb-native/api-articles/nodekoarticle1.html">http://mongodb.github.com/node-mongodb-native/api-articles/nodekoarticle1.html</a><br><a target="_blank" rel="noopener" href="http://www.mongodb.org/display/DOCS/Advanced+Queries">http://www.mongodb.org/display/DOCS/Advanced+Queries</a></p>
<p>请阅读下一篇:</p>
<p><a href="http://toozhao.com/2012/10/nodejs-mongodb-gridfs/">Node.js操作mongodb2)——gridfs操作文件</a></p>
</div>
<footer class="post-footer">
<div class="post-copyright">
<ul>
<li class="post-copyright-author">
<strong>本文作者: </strong>Junv
</li>
<li class="post-copyright-link">
<strong>本文链接:</strong>
<a href="https://toozhao.com/2012/10/22/nodejs-mongo-one/" title="Node.js操作Mongodb(1)">https://toozhao.com/2012/10/22/nodejs-mongo-one/</a>
</li>
<li class="post-copyright-license">
<strong>版权声明: </strong>本博客所有文章除特别声明外,均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" rel="noopener" target="_blank"><i class="fab fa-fw fa-creative-commons"></i>BY-NC-SA</a> 许可协议。转载请注明出处!
</li>
</ul>
</div>
<div class="post-tags">
<a href="/tags/javascript/" rel="tag"># javascript</a>
<a href="/tags/mongodb/" rel="tag"># mongodb</a>
<a href="/tags/Node-js/" rel="tag"># Node.js</a>
</div>
<div class="post-nav">
<div class="post-nav-item">
<a href="/2012/10/14/have-something-to-say-about-onemonth/" rel="prev" title="最近一个多月找工作有感!">
<i class="fa fa-angle-left"></i> 最近一个多月找工作有感!
</a>
</div>
<div class="post-nav-item">
<a href="/2012/10/23/nodejs-mongodb-gridfs/" rel="next" title="Node.js操作mongodb2)——gridfs操作文件">
Node.js操作mongodb2)——gridfs操作文件 <i class="fa fa-angle-right"></i>
</a>
</div>
</div>
</footer>
</article>
</div>
</div>
</main>
<footer class="footer">
<div class="footer-inner">
<div class="copyright">
&copy; 2012
<span itemprop="copyrightYear">2026</span>
<span class="with-love">
<i class="fa fa-heart"></i>
</span>
<span class="author" itemprop="copyrightHolder">Junv</span>
</div>
<div class="powered-by"><a href="https://hexo.io/" rel="noopener" target="_blank">Hexo</a> & <a href="https://theme-next.js.org/muse/" rel="noopener" target="_blank">NexT.Muse</a> 强力驱动
</div>
</div>
</footer>
<div class="toggle sidebar-toggle" role="button">
<span class="toggle-line"></span>
<span class="toggle-line"></span>
<span class="toggle-line"></span>
</div>
<div class="sidebar-dimmer"></div>
<div class="back-to-top" role="button" aria-label="返回顶部">
<i class="fa fa-arrow-up fa-lg"></i>
<span>0%</span>
</div>
<div class="reading-progress-bar"></div>
<a role="button" class="book-mark-link book-mark-link-fixed"></a>
<noscript>
<div class="noscript-warning">Theme NexT works best with JavaScript enabled</div>
</noscript>
<script>
/* 字号调节 A- / A / A+(阅读体验) */
(function () {
'use strict';
function initFontSize() {
var postBody = document.querySelector('.post-body');
if (!postBody || document.getElementById('font-size-control')) return;
var bar = document.createElement('div');
bar.id = 'font-size-control';
bar.className = 'font-size-control';
var labels = [['A-', -1], ['A', 0], ['A+', 1]];
var current = 1.0;
labels.forEach(function (item) {
var btn = document.createElement('button');
btn.textContent = item[0];
btn.title = item[0] === 'A-' ? '减小字号' : item[0] === 'A+' ? '增大字号' : '恢复默认';
btn.addEventListener('click', function () {
if (item[1] === 0) current = 1.0;
else current = Math.min(1.4, Math.max(0.8, current + item[1] * 0.1));
postBody.style.fontSize = current + 'em';
});
bar.appendChild(btn);
});
document.body.appendChild(bar);
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initFontSize);
} else {
initFontSize();
}
})();
</script>
</body>
</html>