当我单击提交按钮时,出现错误提示:
“ TypeError:'Collection'对象不可调用。如果您打算在'Database'对象上调用'insert'方法,则该方法将失败,因为不存在这样的方法。”
这是我的signin.py代码:
from flask import Flask, request, render_template
from pymongo import MongoClient
@app = Flask(__name__)
connection = MongoClient()
db = connection.project #database name.
collection = connection.signup # collection name.
@app.route('/signin/')
def index_show():
return render_template('signin.html')
@app.route('/signin/', methods = ['POST'])
def signup_form():
username = request.form['user']
passowrd = request.form['pass']
collection.insert({'user': username, 'passoword': passowrd})
if __name__ == '__main__':
app.run(debug = True)
Run Code Online (Sandbox Code Playgroud)
我的html文件代码在这里:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form method="post" action=".">
<input type="text" name="user" /><br/><br/>
<input type="password" name="pass" /><br/><br/>
<input type="submit" …Run Code Online (Sandbox Code Playgroud) 我想通过在其他项之前放置具有特定值的项来对集合进行排序.
例如,我希望所有项目"getthisfirst": "yes"都在其他所有项目之前.
{"getthisfirst": "yes"}
{"getthisfirst": "yes"}
{"getthisfirst": "no"}
{"getthisfirst": "maybe"}
Run Code Online (Sandbox Code Playgroud) 我的收藏会看起来像,
{
"_id" : ObjectId("55c8bd1d85b83e06dc54c0eb"),
"name" : "xxx",
"salary" : 10000,
"type" : "type1"
}
{
"_id" : ObjectId("55c8bd1d85b83e06dc54c0eb"),
"name" : "aaa",
"salary" : 10000,
"type" : "type2"
}
{
"_id" : ObjectId("55c8bd1d85b83e06dc54c0eb"),
"name" : "ccc",
"salary" : 10000,
"type" : "type2"
}
Run Code Online (Sandbox Code Playgroud)
我的查询参数将会出现,
{salary = 10000,type = type2}
所以基于查询我需要获取上述查询参数的计数
结果应该是这样的,
{category:'type1',count:500} {category:'type2',count:200} {category:'name',count:100}
现在我通过点击三个不同的查询并构造结果(或)服务器端迭代来获得计数,我可以得到结果.
任何人都可以建议或提供我获得上述结果的好方法
我必须使用nodejs在mongodb中插入大约10,00000个文档.
我正在使用for循环生成这些文档,然后将它们存储到数组中,最后将它们插入到mongodb中.
var codeArray = new Array();
for (var i = 0; i<1000000; i++){
var token = strNpm.generate();
var now = moment().format('YYYYMMDD hhmmss');
var doc1 = {id:token,
Discount_strId:"pending",
Promotion_strCode:token,
Promotion_strStatus:"I",
Promotion_dtmGeneratedDate:now,
User_strLogin:"test",
Promotion_strMode:"S",
Promotion_dtmValidFrom:"pending",
Promotion_dtmValidTill:"pending",
LastModified_dtmStamp:now
};
codeArray.push(doc1);
db.collection('ClPromoCodeMaster').insert(codeArray, function (err, result) {
if (err){
console.log(err);
}else{
console.log('Inserted Records - ', result.ops.length);
}
});
Run Code Online (Sandbox Code Playgroud)
我面临的问题是mongo的插入限制是16mb,所以我不能一次插入整个数组.请建议最佳解决方案.
我在 MongoDB 之上使用 Mongoose。这就是我的模型的外观。
var BookSchema = new Schema({
name: String,
viewCount: { type: Number, default: 0 },
description: {
type: String,
default: 'No description'
},
body: {
type: String,
default: ''
}
}
});
Run Code Online (Sandbox Code Playgroud)
我需要在多个Name, Description, Body字段上搜索一些文本。到目前为止,这就是我正在做的事情及其工作:
Book.find().or([{ 'name': { $regex: term, $options: "$i" }}, { 'description': { $regex: term, $options: "$i" }}, { 'body': { $regex: term, $options: "$i" }}]).exec(
function (err, topics) {
if (err) {
return handleError(res, err);
}
return res.status(200).json(books);
});
Run Code Online (Sandbox Code Playgroud)
问题:我需要想出一些机制,将权重/分数分配给权重最高的所有字段 …
我在处理MongoDb时遇到了麻烦.
我需要 :
我知道我们可以使用$ last和mongodb,但我根本不知道如何继续.
我试过了 :
db.collection.aggregate(
[
{
$group:
{
_id: "$zone._id",
lastRegistered: { $last: "$_id" }
}
}
]
)
Run Code Online (Sandbox Code Playgroud)
但它似乎没有给我我需要的东西
用例子编辑
根据这三个:
{ _id: 55d5a01f9f58d2cc0eb79f5d,
controlDate: Thu Aug 20 2015 11:38:40 GMT+0200 (Paris, Madrid (heure d’été)),
zone:
{ _id: 55cb5bb42d191d2022c5c266,
zoneName: 'Syphon 1',
},
actif: true
},
{ _id: 55d59f129f58d2cc0eb79f5c,
controlDate: Fri Aug 21 2015 07:34:12 GMT+0200 (Paris, Madrid (heure d’été)),
zone:
{ _id: 55cb5bb42d191d2022c5c266,
zoneName: 'Syphon …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用填充查询从数组中删除objectids时非常困难.
这是我的架构
var userSchema = new Schema({
username: String,
password: String,
books: [{type: Schema.Types.ObjectId, ref: 'Book'}]
}
);
var bookSchema = new Schema({
bookid: {type:String, unique:true, required:true},
imgURL: String,
fortrade: Boolean
});
Run Code Online (Sandbox Code Playgroud)
问题出在下面显示的查询中.当我只想删除books数组中的objectid时,它会删除删除书架构项.
users.findOne({'_id':userid}).populate('books').exec(function(usererr,userdata){
if (usererr) return console.error(usererr);
userdata.books.forEach(function(elm,idx){
if(elm.bookid==_book.bookid){
userdata.books[idx].remove();
}
})
});
Run Code Online (Sandbox Code Playgroud) 我有以下数据结构,我试图从“艺术家”数组中删除一个项目。
[
{
"id": "56b26eeb4a876400011369e9",
"name": "Ewan Valentine",
"email": "ewan@test.com",
"artists": [
"56b26f334a876400011369ea",
"56b2702881318d0001dd1441",
"56b2746fdf1d7e0001faaa92",
],
"user_location": "Manchester, UK"
}
]
Run Code Online (Sandbox Code Playgroud)
这是我的功能...
// Remove artist from user
func (repo *UserRepo) RemoveArtist(userId string, artistId string) error {
change := bson.M{"artists": bson.M{"$pull": bson.ObjectIdHex(artistId)}}
fmt.Println(userId)
err := repo.collection.UpdateId(bson.ObjectIdHex(userId), change)
return err
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
{
"_message": {
"Err": "The dollar ($) prefixed field '$pull' in 'artists.$pull' is not valid for storage.",
"Code": 52,
"N": 0,
"Waited": 0,
"FSyncFiles": 0,
"WTimeout": false,
"UpdatedExisting": false,
"UpsertedId": …Run Code Online (Sandbox Code Playgroud) 我目前正在使用 AWS EC2 服务器,并且抓取了一些存储在 MongoDB 集合中的数据。这是我的数据库中唯一的集合。
现在我需要将此集合传输到我的本地计算机上进行处理。我的问题是远程计算机上的剩余磁盘空间不足以转储整个集合。空间可容纳约 60% 的藏品。我尝试使用db.copy()主机db.export()名直接在本地计算机上进行复制,但它不起作用,因为我不在本地网络上,而且即使使用 ssh 隧道,也存在一些身份验证问题。
我想做的是将我的大集合分成 2 个较小的集合并转储每个集合。是否可以?
谢谢你!
我有一个带有providerData对象的mongoose模式:
... , providerData: {}, ...
Run Code Online (Sandbox Code Playgroud)
我想根据对象中providerData对象的ID查询文档.
所以我假设我必须像这样使用点符号:
User.findOne({ providerIDString: providerID }, function(err, user) {...});
Run Code Online (Sandbox Code Playgroud)
哪里
providerIDString is a string like 'providerData.facebook.id'
providerID is the providerData.facebook id
Run Code Online (Sandbox Code Playgroud)
但是,即使查询仍然没有返回结果
db.users.find({"providerData.facebook.id":"THEFACEBOOKID"})
Run Code Online (Sandbox Code Playgroud)
在mongodb shell中返回正确的文档
我是否正确地假设这种情况正在发生,因为providerData.facebook并且providerData.facebook.id未在用户模式中定义?
这是否意味着我必须将它们添加到模式中,或者有没有办法在不在mongoose模式中的嵌套对象上使用点表示法?
mongodb ×10
node.js ×4
mongoose ×3
amazon-ec2 ×1
flask ×1
go ×1
javascript ×1
mapreduce ×1
mgo ×1
pymongo-3.x ×1
python ×1