如何在不知道原始文檔中包含的詳細信息的情況下,像{conditionB:1}這樣的條件並添加時間戳ts_imported,如何從collectionABC中簡單地複製文檔並將它們複製到collectionB中?對於sql的mongodb翻譯INSERT ... SELECT
我無法找到一個簡單的等效MongoDB的這類似於MySQL的INSERT ... SELECT ...
如何在不知道原始文檔中包含的詳細信息的情況下,像{conditionB:1}這樣的條件並添加時間戳ts_imported,如何從collectionABC中簡單地複製文檔並將它們複製到collectionB中?對於sql的mongodb翻譯INSERT ... SELECT
我無法找到一個簡單的等效MongoDB的這類似於MySQL的INSERT ... SELECT ...
您可以使用JavaScript從mongoshell實現了類似的結果:
db.collectionABC.find({ conditionB: 1 }).
forEach(function(i) {
i.ts_imported = new Date();
db.collectionB.insert(i);
});
這不是動態的類似......就像在你的應用程序中做客戶端一樣。 – Sammaye
事實上,問題是將文檔從集合複製到另一個集合,同時以與INSERT ... SELECT類似的方式添加字段。更重要的是,mongoshell是mongodb的主要接口,所有查詢都是javascript,根據我的愚見,javascript查詢可以被同化爲RDBMS的SQL查詢。 – Eric
事實上,無論JS只是另一個驅動程序,它絕不是主要的一個,它只是預先綁定到MongoDB的一個,但是,如果OP弄糊塗了,我想我會說這個動態代碼與它在SQL中的工作方式不同,所以很多人認爲控制檯不是特別的特殊。 – Sammaye
的MongoDB沒有那樣的查詢能力,因此,你可以(在查詢的)插入到從第一個基於變量的另一集合採集。
您需要先取出該文件,然後對其進行操作。
你可以在技術上使用MR,但我有一種感覺,它不適用於你的情況。
不同意你的回答... –
@AmolMKulkarni如何? – Sammaye
請注意,[link-only answers](http://meta.stackoverflow.com/tags/link-only-answers/info )不鼓勵,所以答案應該是尋求解決方案的終點(vs.而另一個引用的中途停留時間往往會隨着時間推移而過時)。請考慮在此添加獨立的摘要,並將鏈接保留爲參考。 – kleopatra
我不是一個專家的MongoDB的背景下,但我對此也做了一些研究,我的理解是,您必須在循環中讀取每個對象並將其保存到數據庫中,然後在保存之前設置任何值(例如ID或時間戳)。 – Diego