sql >> データベース >  >> NoSQL >> MongoDB

スコッティはMongoDBを使用しています

    mongoDB MonadBaseControl IOのインスタンスである任意のモナドで機能するのに十分な汎用性があります およびMonadIO

    たとえば、IOを選択できます モナド。この場合、liftIO . runQuery スコッティの行動の内部:

    import Web.Scotty
    import Database.MongoDB
    import qualified Data.Text.Lazy as T
    import Control.Monad.IO.Class
    
    runQuery :: Pipe -> Query -> IO [Document]
    runQuery pipe query = access pipe master "nutrition" (find query >>= rest) 
    
    main = do
      pipe <- connect $ host "127.0.0.1"
      scotty 3000 $ do
        get "/" $ do
          res <- liftIO $ runQuery pipe (select [] "stock_foods")
          text $ T.pack $ show res
    

    @SebastianPhilipp の後 追加 MonadBaseControl Scotty.ActionTのインスタンス 、何も持ち上げる必要はありません。 mongoDBformscottyを透過的に操作できます。型署名を変更してliftIOをドロップするだけです s:

    runQuery :: Pipe -> Query -> ActionM [Document]
    ...
        get "/" $ do
          res <- runQuery pipe (select [] "stock_foods")
          text $ T.pack $ show res
    



    1. 配列が空の場合、ドキュメントがクエリに表示されません

    2. mongodbでダンプを復元すると失敗する

    3. mongodbのドキュメント構造をmongoシェルで変更する

    4. PHP Mongoの質問のリスト:replicaSetがtrueの場合、_constructは何を返しますか?