Mongoose:从现有数据生成模式

12
例如,我在数据库中有一个user集合:
{'_id':0, 'name': 'Joe', 'score':[80, 33]}
{'_id':1, 'name': 'Moe', 'score':[90, 81]}
... ...

我应该如何使用现有的格式来读取这些数据,也就是说,使用现有的模式而不创建新的模式

我阅读了Mongoose文档并进行了一番搜索,但并没有找到令人满意的答案。

2个回答

8

如果你要在现有的集合中使用mongoose,你需要在mongoose schema中引用该集合。具体做法是在schema中添加集合名称。例如,如果你的集合在 'mongodb://localhost:27017/test' 中,并且名为 'things',那么你应该这样写:

~~~
const Schema = mongoose.Schema;
const ThingSchema = new Schema({
  name: {
    type: String
  }
});

const Model = mongoose.model('Thing', ThingSchema, 'things');
module.exports = Model;
~~~

感谢 http://chrisflx.blogspot.fr/2014/04/nodejs-mongoose-with-preexisting-data.html?m=1

的帮助,关于it技术方面,这篇文章非常有用。

6

如果您使用相同的模式创建一个模型,它将起作用。

var schema = new mongoose.Schema({ name: 'string', score: [] });
var user = mongoose.model('User', schema);

编辑:

Mongoose 是一种对象文档映射(ODM)工具,所以您需要一个模式来创建对象。如果您需要运行查询并从数据库获取原始数据,则应坚持使用此库:

https://github.com/mongodb/node-mongodb-native


我的问题是,如何在不创建一个新的集合的情况下完成它。如果集合非常复杂怎么办。 - wilbeibi
不使用模型?它已经是JSON数据了,你所说的“读取”是什么意思? - tpae
Mongoose是一种ODM,如果您需要在没有模式关系的情况下运行查询,我只会不使用Mongoose并坚持使用mongodb库。 - tpae
3
我的意思是,是否有一种方法可以读取已经存在的数据,并从该现有数据的模式生成一个模式。 - wilbeibi
明白了,这更像是 mongodb 库的工作,而不是mongoose的,谢谢。 - wilbeibi
@wilbeibi,我们可以使用MongoDB库来进行聚合吗? - prabhat mishra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接