我只是从我的数据库创建一个名为 Fruits 的数据库app.js,并使用 Mongoose 将数据库连接到 MongoDB。
const mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:27017/fruitsDB", {useNewUrlParser: true});
mongoose.set('strictQuery', false);
const fruitSchema = new mongoose.Schema({
name: String,
rating: Number,
review: String
});
const Fruit = mongoose.model("Fruit", fruitSchema);
const fruit = new Fruit({
name: "Apple",
rating: 7,
review: "Taste Good"
});
fruit.save();
Run Code Online (Sandbox Code Playgroud)
每当我尝试时node app.js,我都会收到DeprecationWarning。尽管我尝试使用mongoose.set('strictQuery', true);,但同样的错误仍然存在,如下所示:
(node:15848) [MONGOOSE] DeprecationWarning: Mongoose: the `strictQuery` option w
ill be switched back to `false` by default in Mongoose 7. Use `mongoose.set('str
ictQuery', false);` …Run Code Online (Sandbox Code Playgroud) 我的设计中有FlashcardSchemas和PackageSchemas.一个闪存卡可以属于不同的包,一个包可以包含不同的闪存卡.
您可以在下面看到我的mongoose模式定义的精简版本:
// package-schema.js
var Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
var PackageSchema = new Schema({
id : ObjectId,
title : { type: String, required: true },
flashcards : [ FlashcardSchema ]
});
var exports = module.exports = mongoose.model('Package', PackageSchema);
// flashcard-schema.js
var Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
var FlashcardSchema = new Schema({
id : ObjectId,
type : { type: String, default: '' },
story : { type: String, default: '' },
packages : [ PackageSchema ]
});
var …Run Code Online (Sandbox Code Playgroud) _id和id猫鼬有什么区别?哪个更适合引用?
据我所知,自3.8.9版以来,mongoose支持全文搜索.但我找不到一个好的文档!
我想做的事情如下:
db.collection.ensureIndex(
// Fields to index
{
animal: "text",
color: "text",
pattern: "text",
size: "text"
},
// Options
{
name: "best_match_index",
// Adjust field weights (default is 1)
weights: {
animal: 5, // Most relevant search field
size: 4 // Also relevant
}
}
)
Run Code Online (Sandbox Code Playgroud)
我可以用纯猫鼬做吗?或者我必须使用像mongoose-text-search这样的插件?没有重量怎么样?
我该怎么办呢?
我想从Node.js应用程序中的Mongoose设置中检索一些数据.我注意到无论我写什么作为场选择,我总是得到这个_id领域.有没有办法不去取它?这就是我现在的做法:
Transaction.find({username : user.username}, ['uniqueId', 'timeout', 'confirmation_link', 'item_name'], function(err, txs){
console.log("user : " + user.username + " with txs: " + txs);
callback(txs);
});
Run Code Online (Sandbox Code Playgroud)
并记录包含该_id字段的结果.
我!!~在阅读时在代码中发现了一个奇怪的内容:https://github.com/LearnBoost/mongoose/blob/master/lib/document.js#L678
Document.prototype.isModified = function (path) {
return !!~this.modifiedPaths.indexOf(path);
};
Run Code Online (Sandbox Code Playgroud)
我读过那是什么!! (不是)JavaScript中的运算符?以及如何:〜运算符?; 为什么作者!!~在这里使用?
我试过了:
!!~1 // -> true
!!~0 // -> true
!!~-1 // -> false
!!~-2 // -> true
Run Code Online (Sandbox Code Playgroud)
似乎它只是false在数字的时候-1.这样对吗?为什么不核对一下电话号码是不是-1还是>=0?
javascript operators bitwise-operators mongoose comparison-operators
有人可以给我一个关于如何使用猫鼬的Promise的例子.这是我所拥有的,但它没有按预期工作:
app.use(function (req, res, next) {
res.local('myStuff', myLib.process(req.path, something));
console.log(res.local('myStuff'));
next();
});
Run Code Online (Sandbox Code Playgroud)
然后在myLib中,我会有这样的事情:
exports.process = function ( r, callback ) {
var promise = new mongoose.Promise;
if(callback) promise.addBack(callback);
Content.find( {route : r }, function (err, docs) {
promise.resolve.bind(promise)(err, docs);
});
return promise;
};
Run Code Online (Sandbox Code Playgroud)
在某些时候,我希望我的数据存在,但我如何访问它,或者获取它?
这是我的预约系列:
{ _id: ObjectId("518ee0bc9be1909012000002"), date: ISODate("2013-05-13T22:00:00Z"), patient:ObjectId("518ee0bc9be1909012000002") }
{ _id: ObjectId("518ee0bc9be1909012000002"), date: ISODate("2013-05-13T22:00:00Z"), patient:ObjectId("518ee0bc9be1909012000002") }
{ _id: ObjectId("518ee0bc9be1909012000002"), date: ISODate("2013-05-13T22:00:00Z"), patient:ObjectId("518ee0bc9be1909012000002") }
Run Code Online (Sandbox Code Playgroud)
我使用聚合来获得以下结果
{date: ISODate("2013-05-13T22:00:00Z"),
patients:[ObjectId("518ee0bc9be1909012000002"),ObjectId("518ee0bc9be1909012000002"),ObjectId("518ee0bc9be1909012000002")] }
Run Code Online (Sandbox Code Playgroud)
像这样:
Appointments.aggregate([
{$group: {_id: '$date', patients: {$push: '$patient'}}},
{$project: {date: '$_id', patients: 1, _id: 0}}
], ...)
Run Code Online (Sandbox Code Playgroud)
我怎样才能填写患者文件,但是它不起作用Appointments.find({}).populate("patient").aggregate......
换句话说,我可以在同一个语句中使用populate和aggregate
请帮忙
当我尝试删除集合时,Mongoose会抛出一个错误,即" MongoError:ns not found ".
这是我的猫鼬代码:
var mongoose = require('bluebird').promisifyAll(require('mongoose'));
......
......
......
mongoose.connection.db.dropCollection("myCollection",function(err,affect){
console.log('err',err);
})
Run Code Online (Sandbox Code Playgroud)
错误:
错误{[MongoError:ns not found]
name:'MongoError',
message:'ns not found',
ok:0,
errmsg:'ns not found'}