Je veux me connecter à une base de données mongodb en utilisant des macros Excel, quelqu'un sait-il comment accomplir cette tâche?Comment se connecter Mongodb à partir d'Excel
Répondre
Une façon simple est
- créer une dll C# pour interagir avec db par mongo les pilotes disponibles C#.
- Make it Com visible (en AssemblyInfo.cs), construire et l'enregistrer
- Aller à la macro excel -> éditeur Visual Basic
- Cliquez sur outils-> Référence et sélectionnez votre assemblée enregistré
- Et utilisez-le dans votre VBA, comme ceci.
.
Private Sub CallMongo()
Dim mongoObj As New MyMongoAssembly
mongoObj.AddItem("adas");
End Sub
thats all ..
vous plaisantez? –
Y at-il quelque chose de drôle? – RameshVel
J'envisagerais sérieusement de supprimer le mot «simple» de la première phrase de votre réponse. C'est certainement une solution viable pour quelqu'un avec toutes les compétences requises, et le temps, mais ce n'est certainement pas simple. –
Je pense que la meilleure réponse serait d'écrire ou de trouver un pilote ODBC pour MongoDB. Faites-moi savoir si vous en trouvez un. À défaut, vous pouvez écrire une interface Web pour mongodb qui rend la requête appropriée dans une table HTML et utiliser la fonction d'Excel pour analyser les tables HTML à partir de pages Web. Pas aussi propre que ODBC, mais mieux que d'exporter des CSV encore et encore.
vous pouvez toujours regarder cette solution, n'ont pas essayé moi-même et il ne nécessite quelques sauts: http://sqlmag.com/blog/integrating-mongodb-and-open-source-data-stores-power-pivot
Notez que [réponses uniquement sur le lien] (http://meta.stackoverflow.com/tags/link-only -answers/info) sont déconseillés, les réponses SO devraient être l'aboutissement d'une recherche de solution (contre encore une autre escale de références, qui tendent à se périmer dans le temps). S'il vous plaît envisager d'ajouter un synopsis autonome ici, en gardant le lien comme référence. – kleopatra
Ma solution était de laisser Python les coller ensemble à l'aide pymongo et win32com. C'est alors assez simple de courir ce que vous voulez. Dans mon cas, j'ai la boucle Python simplement "écouter" continuellement certaines cellules Excel, appeler ce dont il a besoin de Mongo, puis le remettre dans Excel. C'est flexible et beaucoup de choses peuvent être faites de cette façon. Voici la base de code complète, mais vous devrez changer les appels à Mongodb pour correspondre à votre propre base de données. Ici, vous verrez également certaines façons de changer les couleurs et les choses des cellules Excel à partir de Python. Oh, je dois mentionner qu'il est parsemé de séquences d'échappement ansi, donc vous pourriez vouloir exécuter Python de ansicon ou ConEmu.
import win32com.client as win32
import time # will need this for time parsing
from optparse import OptionParser
import pdb # debugger, when necessary
import string # for string parsing and the alphabet
from pymongo import MongoClient
import inspect
from datetime import datetime, timedelta, tzinfo
from dateutil import tz
from bson.son import SON
import msvcrt # for getch
import os
import sys # for stdout.write
from collections import OrderedDict
def parseCmdLine():
parser = OptionParser(description="Retrieve realtime data.")
parser.add_option("--f",
dest="file",
help="filename",
default="bbcapture.xls")
parser.add_option("--mongohost",
dest="mongohost",
default="192.168.1.30")
parser.add_option("--mongoport",
dest="mongoport",
type="int",
default=27017)
(options, args) = parser.parse_args()
return(options)
options = parseCmdLine() # parse the commandline
client = MongoClient(options.mongohost, options.mongoport) # link to mongo
db = client.bb # the database
bbsecs = db.bbsecs # now all the collections
bbdaily = db.bbdaily
bbticks = db.bbticks
linkstatusperiod = False # for the moving period in the top left excel cell showing we're linked
def ansi(colour = "white", bright = False, back = "black"):
# ansi colour sequences
brit = {True: "\033[1m",
False: "\033[0m"}
colo = {"black": "\033[30m",
"red": "\033[31m",
"green": "\033[32m",
"yellow": "\033[33m",
"blue": "\033[34m",
"magenta": "\033[35m",
"cyan": "\033[36m",
"white": "\033[37m"}
bakk = {"black": "\033[40m",
"red": "\033[41m",
"green": "\033[42m",
"yellow": "\033[43m",
"blue": "\033[44m",
"magenta": "\033[45m",
"cyan": "\033[46m",
"white": "\033[47m"}
sys.stdout.write(brit[bright])
sys.stdout.write(colo[colour])
sys.stdout.write(bakk[back])
def mdaily(ticker = "USDEUR Curncy", field = "LAST_PRICE", sortdirection = 1, numget = 1000000):
ansi("cyan", False)
print "\nGetting", ticker, "field", field, "from Mongo...",
lister = OrderedDict()
#for post in bbdaily.find({"ticker": ticker, "fieldname": field}).limit(numget).sort("time", sortdirection):
for post in bbdaily.find({"$query": {"ticker": ticker, "fieldname": field}, "$orderby": {"time": -1}}).limit(numget):
lister[str(post["time"])] = post["fieldvalue"]
ansi("cyan", True)
print "got", len(lister), "values",
ansi()
return lister
def mtick(tickers, sortdirection = 1, numget = 1000000):
if len(tickers) == 0:
return []
else:
ansi("green", False)
print "\n Getting minutes for for", tickers,
tickerdic = OrderedDict()
for eachticker in tickers:
eachdic = dict()
print numget
for post in bbticks.find({"ticker": eachticker}).limit(numget):
eachdic[post["time"]] = [post["open"], post["high"], post["low"], post["close"]]
ansi("green")
tickerdic[eachticker] = eachdic
print "got", len(eachdic), "for ticker", eachticker,
ansi("green", True)
print "got", len(tickerdic), "tickers",
dates = [set(tickerdic[x].keys()) for x in tickerdic] # get all the dates
dates = set.intersection(*dates) # get the unique ones
dates = [x for x in dates] # convert to list
if sortdirection == -1:
dates = sorted(dates, reverse = True)
else:
dates = sorted(dates, reverse = False)
retlist = [[[x, tickerdic[y][x][0], tickerdic[y][x][1], tickerdic[y][x][2], tickerdic[y][x][3]] for x in dates] for y in tickerdic.keys()]
ansi()
return retlist
def getsecs():
seclist = []
for post in bbsecs.find():
seclist.append(post["ticker"])
return(seclist)
def offsetString(startrow, startcol, endrow, endcol):
startrowstr = str(startrow)
endrowstr = str(endrow)
if(startcol > 26):
startcolstr = string.uppercase[startcol/26 - 1] + string.uppercase[startcol % 26 - 1]
else:
startcolstr = string.uppercase[startcol - 1]
if(endcol > 26):
endcolstr = string.uppercase[endcol/26 - 1] + string.uppercase[endcol % 26 - 1]
else:
endcolstr = string.uppercase[endcol - 1]
return(startcolstr + startrowstr + ":" + endcolstr + endrowstr)
def main():
excel = win32.gencache.EnsureDispatch("Excel.Application")
excel.Visible = 1
try: # try to link to the file
ansi("red", False)
print "Linking to", options.file
wb = excel.Workbooks(options.file)
ws = wb.Worksheets("MongoData")
ansi()
except: # not open then try to load it
try:
ansi("red", False)
print "Not open.... trying to open in current directory", os.getcwd()
ansi()
wb = excel.Workbooks.Open(os.getcwd() + "\\" + options.file)
ws = wb.Worksheets("MongoData")
ansi()
except: # can't load then ask to create it
ansi("red", True)
print options.file, "not found here. Create? (y/n) ",
ansi("yellow", True)
response = msvcrt.getch()
print response
ansi()
if response.upper() == "Y":
wb = excel.Workbooks.Add()
ws = excel.Worksheets.Add()
ws.Name = "MongoData"
wb.SaveAs(os.getcwd() + "\\" + options.file)
else: # don't wanna create it then exit
print "bye."
return
# see if ticks sheet works otherwise add it
try:
wst = wb.Worksheets("MongoTicks")
except:
wst = excel.Worksheets.Add()
wst.Name = "MongoTicks"
wst.Cells(3, 2).Value = 1
# see if securities list sheet works otherwise add it
try:
wall = wb.Worksheets("AllSecurities")
wall.Cells(1, 1).Value = "List of all securities"
wall.Range("A1:A1").Interior.ColorIndex = 8
wall.Range("A:A").ColumnWidth = 22
except:
wall = excel.Worksheets.Add()
wall.Name = "AllSecurities"
wall.Cells(1, 1).Value = "List of all securities"
wall.Range("A1:A1").Interior.ColorIndex = 8
wall.Range("A:A").ColumnWidth = 22
ansi("green", True)
print "talking to", options.file,
ansi("green", False)
print "... press any key when this console has the focus, to end communication"
ansi()
def linkstatusupdate():
global linkstatusperiod
if linkstatusperiod:
ws.Cells(1, 1).Value = "Talking to Python|"
wst.Cells(1, 1).Value = "Talking to Python!"
linkstatusperiod = False
else:
ws.Cells(1, 1).Value = "Talking to Python|"
wst.Cells(1, 1).Value = "Talking to Python!"
linkstatusperiod = True
ws.Cells(1, 2).Value = datetime.now()
# daily worksheet header formatting
ws.Cells(1, 1).Value = "Excel linked to Python"
ws.Cells(1, 3).Value = "Sort direction:"
ws.Cells(1, 4).Value = 1
ws.Cells(1, 5).Value = "Fetch max:"
ws.Cells(2, 1).Value = "Enter tickers:"
ws.Cells(3, 1).Value = "Start data:"
ws.Cells(4, 1).Value = "End data:"
ws.Range("A:A").ColumnWidth = 22
ws.Range("B:B").ColumnWidth = 20
ws.Range("A2:GS2").Interior.ColorIndex = 19 # beige 200 columns
ws.Range("A3:GS4").Interior.ColorIndex = 15 # grey
ws.Range("A2").Interior.ColorIndex = 3 # red
ws.Range("A3:A4").Interior.ColorIndex = 16 # dark grey
# minute worksheet header formatting
wst.Cells(1, 1).Value = "Excel linked to Python"
wst.Cells(2, 1).Value = "Enter tickers:"
#wst.Cells(3, 1).Value = "Enter periodicity:"
wst.Cells(1, 3).Value = "Sort direction:"
wst.Cells(1, 4).Value = 1
wst.Cells(1, 5).Value = "Fetch max:"
wst.Range("A:A").ColumnWidth = 22
wst.Range("B:B").ColumnWidth = 20
wst.Range("A2:GS3").Interior.ColorIndex = 19 # beige 200 columns
wst.Range("A4:GS5").Interior.ColorIndex = 15 # grey
wst.Range("A2:A3").Interior.ColorIndex = 4 # red
wst.Range("6:100000").Clear()
linkstatusperiod = False
oldsecd = []
oldseci = []
oldnumget = oldsortdir = toldnumget = toldsortdir = 0
while not msvcrt.kbhit():
try:
print "...", wb.Name,
securities = ws.Range("B2:GS2").Value[0]
sortdir = ws.Cells(1, 4).Value
if sortdir == None:
sortdir = 1
sortdir = int(sortdir)
numget = ws.Cells(1, 6).Value
if numget == None:
numget = 1000000
numget = int(numget)
securities = [x for x in securities if x is not None]
if not ((oldsecd == securities) and (oldnumget == numget) and (oldsortdir == sortdir)): # clear content of cells
ws.Range("5:1000000").Clear()
ws.Range("B3:GS4").Clear()
ws.Range("B3:GS4").Interior.ColorIndex = 15 # grey
oldsecd = securities
oldnumget = numget
oldsortdir = sortdir
currentcol = 0
for sec in securities:
linkstatusupdate()
secdata = mdaily(sec, "LAST_PRICE", sortdir, numget)
currentrow = 0
vallist = []
datelist = []
if sortdir == -1:
sortedkeys = sorted(secdata, reverse = True)
else:
sortedkeys = sorted(secdata, reverse = False)
for eachkey in sortedkeys:
datelist.append(eachkey)
vallist.append(secdata[eachkey])
#now stick them in Excel
ws.Range(offsetString(5 + currentrow, 2 + currentcol, 5 + currentrow + len(vallist) - 1, 2 + currentcol)).Value = \
tuple([(x,) for x in vallist])
if currentcol == 0:
ws.Range(offsetString(5 + currentrow, 1, 5 + currentrow + len(vallist) - 1, 1)).Value = \
tuple([(x,) for x in datelist])
if len(sortedkeys) > 0:
ws.Cells(3, 2 + currentcol).Value = sortedkeys[len(sortedkeys) - 1].split()[0] # start data date
ws.Cells(4, 2 + currentcol).Value = sortedkeys[0].split()[0] # end data date
currentcol += 1
# now do the tick data
securitiest = wst.Range("B2:GS2").Value[0]
securitiest = [x for x in securitiest if x is not None]
tsortdir = wst.Cells(1, 4).Value
if tsortdir == None:
tsortdir = 1
tsortdir = int(tsortdir)
tnumget = wst.Cells(1, 6).Value
if tnumget == None:
tnumget = 1000000
tnumget = int(tnumget)
if not ((oldseci == securitiest) and (toldnumget == tnumget) and (toldsortdir == tsortdir)): # clear the contents of the cells
wst.Range("6:1000000").Clear()
wst.Range("B4:GS5").Clear()
wst.Range("B4:GS5").Interior.ColorIndex = 15 # grey
oldseci = securitiest
toldnumget = tnumget
toldsortdir = tsortdir
secdata = mtick(securitiest, tsortdir, tnumget)
currentsec = 0
for x in secdata:
sender = [tuple(y[1:5]) for y in x]
wst.Range(offsetString(6, 2 + currentsec * 4, 6 + len(x) - 1, 5 + currentsec * 4)).Value = sender
if currentsec == 0: # then put the dates in
dates = [tuple([y[0], ]) for y in x]
wst.Range(offsetString(6, 1, 6 + len(x) - 1, 1)).Value = dates
wst.Range(offsetString(5, 2 + currentsec * 4, 5, 5 + currentsec * 4)).Value = ["open", "high", "low", "close"]
currentsec += 1
for x in range(0, len(securitiest)):
wst.Cells(4, 2 + x * 4).Value = securitiest[x]
linkstatusupdate()
allsecs = tuple([(yy,) for yy in getsecs()])
wall.Range(offsetString(2, 1, len(allsecs) + 1, 1)).Value = allsecs
except:
print "\nExcel busy",
time.sleep(1)
endchar = msvcrt.getch() # capture the last character so it doesn't go to console
print "\nbye."
if __name__ == "__main__":
main()
Voici un pilote ODBC solide qui contribue également à maintenir la fidélité de vos données MongoDB en exposant le modèle de données MongoDB imbriquées comme un ensemble de tables relationnelles vers Excel et d'autres applications ODBC:
http://www.progress.com/products/datadirect-connect/odbc-drivers/data-sources/mongodb
L'approche Shell
On peut accéder à pratiquement tout ce qui s'interface avec la ligne de commande avec Shell.
Voici un exemple simple qui se connecte à une instance MongoDB en cours d'exécution et imprime une requête dans la fenêtre Exécution. Vous devrez ajouter une référence au Windows Script Host Object Model
. Il n'est cependant pas très intéressant d'imprimer les chaînes JSON brutes simplement en imprimant simplement les chaînes JSON brutes.Vous pouvez écrire votre propre analyseur JSON mais, pour cet exemple, nous allons utiliser VBA-JSON par Tim Hall (vous pouvez find it on GitHub).
Au moment de l'écriture, il y a un problème avec VBA-JSON qui doit être résolu en l'utilisant pour analyser les chaînes retournées par MongoDB. Toutes les valeurs qui contiennent des parenthèses, par ex. "_id": ObjectId("...")
, va lancer une erreur. Un correctif rapide et sale pour cela consiste à utiliser RegEx pour nettoyer la chaîne pour l'analyseur. Vous devrez faire référence à la bibliothèque Microsoft VBScript Regular Expressions 5.5
pour que la fonction suivante fonctionne.
Private Function CleanString(str As String) As String
Dim temp As String
Dim rx As New RegExp
With rx
.IgnoreCase = True
.Global = True
.Pattern = "[a-z]*\(" ' Left
temp = .Replace(str, "")
.Pattern = "\)" ' Right
temp = .Replace(temp, "")
End With
CleanString = temp
End Function
On peut alors analyser le JSON retourné de MongoDB et ajoutez chaque objet à un Collection
. Accéder aux valeurs devient assez simple.
Private Sub Mongo()
Dim wsh As New WshShell
Dim proc As WshExec
Dim line As String
Dim response As New Collection
Dim json As Object
Set proc = wsh.Exec("mongo")
With proc
.StdIn.WriteLine "use test"
.StdIn.WriteLine "db.restaurants.find({""address.zipcode"":""10075""})"
.StdIn.WriteLine "quit()"
Do While .Status = WshRunning
line = .StdOut.ReadLine
If line = "Type ""it"" for more" Then
.StdIn.WriteLine "it"
ElseIf line Like "{*" Then
response.Add ParseJson(CleanString(line))
End If
DoEvents
Loop
End With
For Each json In response
Debug.Print json("name"), json("address")("street")
Next
End Sub
... qui produira la sortie suivante de la MongoDB Example Dataset.
Nectar Coffee Shop Madison Avenue
Viand Cafe Madison Avenue
Don Filippo Restaurant Lexington Avenue
Lusardi'S Restaurant Second Avenue
Due Third Avenue
Lenox Hill Grill/Pizza Lexington Avenue
Quatorze Bistro East 79 Street
Luke'S Bar & Grill Third Avenue
Starbucks Coffee Lexington Avenue
New York Jr. League East 80 Street
Doc Watsons 2 Avenue
Serafina Fabulous Pizza Madison Avenue
Canyon Road Grill 1 Avenue
Sushi Of Gari East 78 Street
Gotchas
ReadLine
etWriteLine
sont fonctions de blocage.- La fenêtre ouverte par
Exec
ne peut pas être masquée.
Une solution pour les deux de la ci-dessus serait d'utiliser une approche à deux couches, où VBA appelle un script caché à l'aide wsh.Run
, qui exécute ensuite le Exec
(ainsi que tout autre code qui interagit avec le proc) . L'inconvénient de cette approche est que StdIn (et dans une certaine mesure StdOut) doit être écrit dans un fichier.
C'est la meilleure solution. Ne nécessite pas de licence, pas de couche supplémentaire (python/C#), pas de gestion de fichiers, et est vraiment très élégant. Il y a quelques méthodes bizarres pour cacher la fenêtre d'exécution, décrites ici - http://stackoverflow.com/questions/32297699/hide-command-prompt-window-when-using-exec, mais je ne les ai pas essayées. – lukehawk
Des pilotes ODBC sont disponibles à partir de la progression (mentionnée ci-dessous), à partir d'easysoft et de cdata.
J'ai essayé avec le progrès et il fait bien le travail. Tous ces pilotes sont des logiciels sous licence et la version d'essai est également disponible.
Le plus facile à utiliser est le cdata Excel Add-In qui peut interroger, mettre à jour et permet également d'utiliser la formule basée sur Excel & VBA. C'est aussi autorisé. Une autre façon est d'interroger en utilisant pymongo en python au lieu de client mongo, dumping les résultats dans un fichier csv et l'importation de la CSV via VBA. Interroger mongoDB à partir de python est assez facile.
Voici l'exemple à interroger à partir de MongoDB Example Dataset.
Le fichier Python pour la requête, "queryMongoDB.py »
SERVER = "192.168.43.22" # Replace wit with Server IP or Hostname running mongod
PORT = "27017"
def queryMongoDB():
try:
from pymongo import MongoClient
client = MongoClient("mongodb://" + SERVER + ":" + PORT)
db = client.test
queryResp = db.restaurants.find({'address.zipcode': "11215", 'cuisine': 'Indian'}, {'name': 1, 'address.building': 1, 'address.street': 1, 'borough': 1, '_id': 0})
if queryResp.count() > 0 :
for row in queryResp:
printStr = ""
if 'name' in row:
printStr = row['name'] + ","
else:
printStr = ","
if 'building' in str(row):
printStr = printStr + row['address']['building'] + ","
else:
printStr = printStr + ","
if 'street' in str(row):
printStr = printStr + row['address']['street'] + ","
else:
printStr = printStr + ","
if 'borough' in row:
printStr = printStr + row['borough']
print(printStr)
else:
return -2
return 0
except ImportError:
return -1
queryMongoDB()
L'exécution de ce script la sortie standard comme
Kinara Indian Restaurant,473,5 Avenue,Brooklyn
Baluchi'S,310,5 Avenue,Brooklyn
Kanan Indian Restaurant,452,3Rd Ave,Brooklyn
New Aarpan,396,5Th Ave,Brooklyn
Indian Spice,351,7Th Ave,Brooklyn
La macro Excel VBA à l'aide WshShell, macro_queryMongoDB()
Sub macro_queryMongoDB()
Dim pythonExecutable As String
Dim pythonQueryScript As String
pythonExecuatble = "python.exe" ' Path to python interpreter
pythonQueryScript = "queryMongoDB.py" 'Full path to the above Python script
If Dir(pythonExecuatble) <> "" And Dir(pythonQueryScript) <> "" Then
Dim objShell As Object
Dim objWshScriptExec As Object
Dim objStdOut As Object
Set objShell = CreateObject("WScript.Shell")
Set objWshScriptExec = objShell.Exec(pythonExecuatble & " " & pythonQueryScript) ' Execute the Python script
Set objStdOut = objWshScriptExec.StdOut
Set mybook = Excel.ActiveWorkbook
Set mybookSheet = mybook.ActiveSheet
Dim rline As String
Dim strline As String
Dim lineCount As Long
' Parse the results
lineCount = 1
While Not objStdOut.AtEndOfStream
rline = objStdOut.ReadLine
If rline <> "" Then
strline = rline & vbCrLf
mybookSheet.Range(mybookSheet.Cells(lineCount, "A"), mybookSheet.Cells(lineCount, "D")).Value = Split(strline, ",")
lineCount = lineCount + 1
End If
Wend
MsgBox "Query Successful"
Else
MsgBox "Python executable or Python query DB script doesn't exist."
End If
End Sub
L'exécution de cette macro va peupler la séparées par des virgules données en lignes comme
Je peux faire écho aux autres réponses qui se réfèrent à l'utilisation d'un pilote ODBC pour se connecter aux données MongoDB dans Excel. Le problème, bien sûr, c'est qu'il n'y a aucun moyen d'utiliser des macros.
Comme Irfan mentionné le CData Excel Add-In vous permettra de faire exactement cela. (Divulgation complète, je travaille pour le logiciel CData). Vous pouvez lire sur la connexion à MongoDB en utilisant des macros dans notre Help documentation, mais j'ai inclus un extrait de code correspondant ici pour démontrer la fonctionnalité de base de la lecture de vos données MongoDB dans Excel:
Sub DoSelect()
On Error GoTo Error
p_id = InputBox("_id:", "Get _id")
If p_id = False Then
Exit Sub
End If
Dim module As New ExcelComModule
module.SetProviderName ("MongoDB")
Cursor = Application.Cursor
Application.Cursor = xlWait
Dim nameArray
nameArray = Array("_idparam")
Dim valueArray
valueArray = Array(p_id)
Query = "SELECT City, CompanyName FROM Customers WHERE _id = @_idparam"
module.SetConnectionString ("Server=127.0.0.1;Port=27017;Database=test;User=test;Password=test;")
If module.Select(Query, nameArray, valueArray) Then
Dim ColumnCount As Integer
ColumnCount = module.GetColumnCount
For Count = 0 To ColumnCount - 1
Application.ActiveSheet.Cells(1, Count + 1).Value = module.GetColumnName(Count)
Next
Dim RowIndex As Integer
RowIndex = 2
While (Not module.EOF)
For columnIndex = 0 To ColumnCount - 1
If Conversion.CInt(module.GetColumnType(columnIndex)) = Conversion.CInt(vbDate) And Not IsNull(module.GetValue(columnIndex)) Then
Application.ActiveSheet.Cells(RowIndex, columnIndex + 1).Value = Conversion.CDate(module.GetValue(columnIndex))
Else
Application.ActiveSheet.Cells(RowIndex, columnIndex + 1).Value = module.GetValue(columnIndex)
End If
Next
module.MoveNext
RowIndex = RowIndex + 1
Wend
MsgBox "The SELECT query successful."
Else
MsgBox "The SELECT query failed."
End If
Application.Cursor = Cursor
Exit Sub
Error:
MsgBox "ERROR: " & Err.Description
Application.Cursor = Cursor
End Sub
Notre 2016 version est actuellement en version bêta , ainsi vous pouvez commencer à travailler avec vos données MongoDB dans Excel gratuitement aujourd'hui.
Ils disent qu'il ya une 3ème partie pilote MongoDB COM autour de: http://na-s.jp/MongoCOM/index.en.html Après l'installation et le référencement, vous pouvez exécuter des requêtes telles que
Dim oConn
Dim oCursor,o
Set oConn = oMng.NewScopedDBConnection(cHostAndPort)
Set oCursor = oConn.Query("ec.member", oMng.FJ("{ ""age"": 37 }")
Do While oCursor.More
Set o = oCursor.Next
MsgBox "mname: " & o("mname")
MsgBox "dept: " & o("dept")
MsgBox "age: " & o("age")
Loop
Ceci est pour ceux qui pense que dénormaliser des structures MongoDB et les traduire en requête SQL à la volée chaque fois que vous avez besoin d'un morceau de données est une surcharge ;-)
- 1. PHP ne peut pas se connecter à MongoDB
- 2. Impossible de se connecter à MongoDB via PHP
- 3. Ruby Sinatra - se connecter à mongoDB sur mongoHQ échoué
- 4. comment se connecter à SQL Server à partir de JSF
- 5. comment se connecter à ftp à partir du script vb
- 6. Comment se connecter à Apache OfBiz à partir de .NET
- 7. Comment se connecter à l'instance SSAS à partir de SSMS?
- 8. Comment se connecter à facebook
- 9. Comment se connecter à partir de rubis MS Sql Server
- 10. Comment se connecter à la console JBoss
- 11. Connexion à MongoDB à partir de MATLAB
- 12. Se connecter à Oracle à partir de Sybase
- 13. Comment se connecter à db en fonction de @ request.host value?
- 14. Se connecter ou ne pas se connecter?
- 15. Squid se connecte sur mongodb
- 16. Sans surveillance se connecter à Facebook via Facebook se connecter
- 17. Comment se connecter dans ASP.NET
- 18. Comment se connecter nsxmlparser
- 19. Comment se connecter HibernateCriteriaBuilder
- 20. Android se connecter à Twitter
- 21. Comment se connecter à SQL Server 2008
- 22. Comment se connecter à delphi .net objets
- 23. Comment se connecter à wordpress par programme?
- 24. Mysql - comment autoriser l'utilisateur à se connecter?
- 25. Comment se connecter automatiquement à l'application asp.net
- 26. comment se connecter à l'adhésion ASP
- 27. comment se connecter à twitter sur iphone?
- 28. Comment se connecter GtkTextView à GtkMenuItem
- 29. comment se connecter à MySQL sur localhost
- 30. Comment se connecter à l'événement close d'IE
Depuis presque aussi longtemps que cette question a été posée, un ticket a existé dans le tracker pour MongoDB demandant le même chose: https://jira.mongodb.org/browse/SERVER-2 063 –