鍍金池/ 問答/ 數(shù)據(jù)庫問答
念舊 回答

解決nodejs require module時循環(huán)引用會導(dǎo)致undefined的問題
這個一般在定義關(guān)聯(lián)的時候會用。
目前我的做法是把所有model的關(guān)聯(lián)放到一個js去做

import { Authorize, AuthorizeAttributes, AuthorizeInstance } from './authorize';
import { Comment, CommentAttributes, CommentInstance } from './comment';
import { Hit, HitAttributes, HitInstance } from './hit';
import { Moneylog, MoneylogAction, MoneylogAttributes, MoneylogInstance } from './moneylog';
import { Order, OrderAttributes, OrderInstance } from './order';
import { Post, PostAttributes, PostContentType, PostInstance } from './post';
import { Poundage, PoundageAttributes, PoundageInstance } from './poundage';
import { User, UserAttributes, UserInstance } from './user';
import { Withdrawal, WithdrawalAttributes, WithdrawalInstance } from './withdrawal';

Comment.belongsTo(Post, { foreignKey: 'post_id', as: 'post' });
Comment.belongsTo(User, { foreignKey: 'user_id', as: 'user' });

Order.belongsTo(User, { foreignKey: 'user_id', as: 'user' });
Order.belongsTo(Post, { foreignKey: 'post_id', as: 'post' });

Post.belongsTo(User, { foreignKey: 'user_id', as: 'user' });
Post.hasMany(Comment, { foreignKey: 'post_id', as: 'commentList' });

User.hasMany(Post, { foreignKey: 'user_id', as: 'posts' });
User.hasMany(Order, { foreignKey: 'user_id', as: 'orders' });
User.hasMany(Comment, { foreignKey: 'user_id', as: 'comment' });
悶油瓶 回答

安裝多版本python的命令行python版本問題?解決:python -V 或者py -V,python3 -V
安裝env環(huán)境控制問題?解決:pip3 install sqlalchemy

局外人 回答

把條件查詢放到子查詢中。

氕氘氚 回答

查了下文檔,應(yīng)該是因為你這是兩次查詢,一次count查詢,一次skip加limit查詢,所以你的query查詢永遠都是最先指定的count查詢,所以你第二次的結(jié)果其實就是count返回的結(jié)果,所以是number類型的數(shù)字。

雖然不知道你為啥又不寫回調(diào),又不走Promise形式也能得到結(jié)果。我也就這么寫了~

分兩次查詢就行了,因為你第二次查詢是skip加limit,所以應(yīng)該沒辦法不走2次查詢又能得出總文檔數(shù)又能得出分頁查詢得結(jié)果。

const query1 = myModel.find({name:'xiaoming'});
const query2 = myModel.find({name:'xiaoming'});
const total = await query1.count().exec(); //所有name為xiaoming的文檔數(shù)量
const data = await query2.skip(20).limit(10).exec();

因為MongoDB對中文的支持需要安裝第三方分詞引擎RLP(Rosette Linguistics Platform)。這個引擎并不是免費的,所以對中文的支持也只在MongoDB企業(yè)版中支持。具體請參考文檔:https://docs.mongodb.com/manu...

笨笨噠 回答

你所使用的mongodb是nodejs的一個package,而不是原生的查詢語句,那是package生成的最終的結(jié)果。
Node.js MongoDB Driver API

文檔里寫很清楚find(query, options),options的定義里是沒有_id的,里面有projection應(yīng)該就是你想要的。

心夠野 回答

你這是什么邏輯?你是要實現(xiàn) 2 是否包含在 1,2,3,4,5里面嗎?

厭惡我 回答

一直建議大家用RPM或從軟件源安裝,這也是原因之一了。
RHEL的軟件源安裝可以參考文檔,不多說了。從安裝到啟動,停止,開機自啟動全都有講。
需要注意的是你原來是以root賬號啟動,基于安全原因一般是不建議的。源安裝的版本是以mongod用戶啟動,所以需要修改相應(yīng)的目錄權(quán)限,包括dbpath和其他一些地方,啟動的時候注意看log,里面會提示你哪些權(quán)限不對。

念初 回答

spring4及以后的話,在你要訪問的那個接口上添加@CorsOrigin注解,允許該接口跨域訪問,如果是之前的話寫一個自己的filter全局過濾請求頭信息,具體自行Google

互擼娃 回答

你只需要一個webstorm IDE就行了

貓館 回答

robomongo,挺不錯的

全面的分析可以參考 MongoDB 生態(tài) – 可視化管理工具

情未了 回答

試試加這個配置:

spring.jpa.show-sql=true

從日志信息來看,spring bean close,JMX-exposed beans on shutdown,以及mongodb的連接關(guān)閉了。
如果想具體排查哪里出問題了, 先移除redis和mongodb相關(guān)依賴和操作,判斷是否存在問題,然后一個一個移回項目。

耍太極 回答

ll /proc/23768

關(guān)注輸出的exe -> xxx 指向的執(zhí)行命令絕對路徑

然后百度 這個進程啟動的進程名是什么,進行排查

選擇 回答

如果文檔中的 _id 字段是由 mongo 自動生成的, 那么本身這個字段就帶有時序, 因為 ObjectId 四要素
中就有插入時間, query 語句中啥也不寫, 其結(jié)果就是按時序排序的. 下面語句就可以返回 collection 中的最新 10 條數(shù)據(jù):

db.collection.find().sort({ _id : -1 }).limit(10)

也可以根據(jù) ObjectId 包含創(chuàng)建時間的特性, 通過構(gòu)造 ObjectId 的辦法, 來指定查詢某時間段內(nèi)的文檔. 下面的 python 程序可以查詢 2018-04-10 日之后插入到 collection 中的文檔 (手敲, 親測有效):

#!/usr/bin/python
import sys
import datetime
from pymongo import MongoClient
from bson import objectid

mongo_conn = MongoClient("mongodb://user:pass@11.22.33.44:27017")

gen_time = datetime.datetime(2018, 4, 10)
dummy_id = objectid.ObjectId.from_datetime(gen_time)
cursor = mongo_conn['your_db']['collection'].find(
    {'_id' : {'$gt' : dummy_id} }
)

for v in cursor:
    print(v)

所以, 你的需求中, 只需要保存 _id 字段即可, 或者保存一個時間戳也可以.

另, 如果你的這個 collection 被設(shè)置為 Capped Collections, 那么你還可以考慮使用 Tailable Cursors 來時刻獲取更新數(shù)據(jù). 當然我估計這應(yīng)該不符合你的使用場景.

參考:
mongo ObjectId
mongo Tailable Cursors
mongo Capped Collections
python datetime
陌顏 回答

4000次的循環(huán)本身并不大,如果循環(huán)里僅僅是對內(nèi)存的操作其實很快就應(yīng)該完成,但是你在循環(huán)里做了很多次數(shù)據(jù)庫操作,這應(yīng)該就是造成性能問題的根本原因。盡管每條sql執(zhí)行都很快,但是你忽略了每次執(zhí)行所帶來的網(wǎng)絡(luò)io開銷時間。我才想4000次的循環(huán)里如此多的數(shù)據(jù)庫操作足以是你的腳本超時了,當你所提到超時時,我認為你的php運行在fast cgi模式下。那么你有兩種方法來解決
1,將sql操作合并,一次或幾次在循環(huán)之外一口氣得到所有的數(shù)據(jù),再在循環(huán)中進行分門別類。我相信這樣做會立竿見影的提升效率。
2, 如果這個操作不是及時性的,那么可以嘗試放在cli模式下運行,你不用修改代碼,盡管效率同樣低,但cli模式下腳本不會超時。

另外如果你所獲得到數(shù)據(jù)總量很大,那么還要考慮php本身為腳本所分配的最大可用內(nèi)存,如果這個值低于你獲取的數(shù)據(jù)所需要的內(nèi)存,那么即便在cli模式腳本還是得崩。這個配置好像是在php.ini里一個叫max_memory_size定義的,名字可能不準確,我記不太清了

心上人 回答
  1. 把項目代發(fā)放入www文件夾里面

  2. 開啟wamp.server 等待變綠色

  3. 用localhost/項目文件名稱訪問

乖乖噠 回答

sql語句當然不支持,并沒有對象這個概念。要使用對象一般是通過orm框架生成sql語句進行查詢,比如sequelize。