在MongoDB中按用户ID获取集合

时间:2018-02-08 18:51:01

标签: javascript node.js mongodb

最大的问题是我对MongoDB完全不熟悉。我知道如何在SQL中执行此操作但无法将我的想法转移到NoSQL。我有这个模型:

var accountSchema = new mongoose.Schema({
  isPremium: Boolean,
  website: []
});

我正在使用mongoose,因此它会自动创建Id,用户名和密码。我的注册用户看起来像这样:

{
  _id: ObjectId('5a79c89b59b6042a5d89584b'),
  websites: ['a.com', 'b.com', 'c.com'],
  username: 'a@a.a',
  isPremium: false,
  hash:
    'a long hash',
  salt: 'a long salt',
  __v: 0,
};

我想要写出websites数组。我想只抓取某个用户下的网站。 (不要让别人只看到所有网站)。

我该怎么办?我会在点击后传递userId还是在会话中进行传递? “查询”会是什么样的?

1 个答案:

答案 0 :(得分:1)

你可以这样做。

首先将您的模型定义为单独的模块

var mongoose = require('mongoose');

const accountSchema = mongoose.Schema(
{
  isPremium: Boolean,
  website: []
});

module.exports = mongoose.model('account',accountSchema);

然后您可以在代码中随处使用此模型

const account = require('yourModulePath');

account.findOne({YouSearchParameters}).
then((account) => {

  // let websites = account.website
  // Do you logic

})

您还可以使用.select

过滤结果
account.findOne({YouSearchParameters}).select({ "website": 1, "_id": 0}).then((account)

所以你只需要获得一系列网站