0

我需要使用字段值“codigo”在 mongo 中找到一个数据对象。我正在使用 TMongoWire。

我的代码

插入值:



     FMongoWire.Insert(
        'johni.alunos', BSON( [
          'id', mongoObjectId,
          'codigo', '1',
          'nome', 'Johni Douglas Marangon'
        ] ) );

我正在使用此代码查找数据,此代码不是数据结果。

    变量
      文件:IBSONDocument;
    开始
      文档:= FMongoWire.Get('johni.alunos', BSON['codigo', '1'] );

此代码也不是结果数据



    var
      WireQuery: TMongoWireQuery;
      Document: IBSONDocument;]
    begin
      Document: BSON;

      WireQuery:= TMongoWireQuery.Create( FMongoWire );
      try
        WireQuery.Query( 'johni.alunos' , BSON( [ 'codigo', '1' ] ) );

        WireQuery.Next( Document );

        Result:= VarToStr( Document[ 'nome' ] );

      finally
        FreeAndNil( WireQuery );

      end;
    end;

如果我使用 ObjectID 值,它可以工作。

任何人都知道如何使用不是 ObjectId 的字段值 TMongoWire 进行搜索?

谢谢

4

2 回答 2

0

问题的解决方案https://github.com/stijnsanders/TMongoWire/issues/14

谢谢

于 2013-10-09T16:16:05.783 回答
0

奇怪,我看了一个同事做的一个小测试程序,看起来一模一样。但是有一个小的变化:

  d := BSON(['codigo','1']);
  q := TMongoWireQuery.Create(FMongoWire);
  try
    q.Query('johni.alunos',d);
    if q.Next(d) then
    begin
      //found!
    end;
  finally
    q.Free;
  end;

其次,也许你可以试试“umongo”,看看集合中的数据? http://www.edgytech.com/umongo

然后,您可以使用以下查询“连接”到您的数据库并在您的集合上“查找”(右键单击):

{ codigo: 1 }
于 2013-09-18T08:56:10.677 回答