8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

如何在Mongo文档字段中排序阵列

alec_djinn 7月前

47 0
我有mongo文档,我可以使用find_one获得 实际上,我不需要python示例的答案。 我只能接受该示例的蒙古查询 obj =等待collection.find_one({'fields.uu ...

我有mongo文档,我正在使用find_one

获得它

我实际上不需要python示例的答案。

我只能接受该示例的mongo查询
obj = await collection.find_one({'fields.uuid': obj_uuid})
{
    _id: ObjectId('65d5e666deda15bb37f308fe'),
    deleted: false,
    fields: {
        'uuid': 'some_uuid',
        'employees': [
          {
            "first_name": "Anna"
          },
          {
            "first_name": "Bob"
          }
        ]
    }
}

我想知道是否有办法在字段中对此数组进行分类 员工

例如,鲍勃在此数组中是第一个或最后一个?

我知道Mongo有一个与替换字段的聚合,但这仅在列表上起作用

帖子版权声明 1、本帖标题: 如何在Mongo文档字段中排序阵列
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由alec_djinn在本站《python》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 你检查了吗
  • 非常感谢!
  • @zessshi不客气。
  • def open_chrome(self): 浏览器= WebDriver.Chrome() browser.get('https://www.google.com.br') def open_youtube(self): YouTube = WebDriver.Chrome() youtube.get('https://www.y ...
    def open_chrome(self):        
        browser = webdriver.Chrome()
        browser.get('https://www.google.com.br')
    
    def open_youtube(self):
        youtube = webdriver.Chrome()
        youtube.get('https://www.youtube.com.br')
    

    我尝试使用睡眠,但效果不佳。

    该程序变得慢,表现很差。
  • 我正在尝试向Azurechatopenai提出一个非常大的问题。 因此,我会收到以下错误: OpenAi.badrequesterror:错误代码:400- {'错误':{'message':“此模型的M ...

    我正在尝试向Azurechatopenai执行一个非常大的问题。

    因此,我遇到以下错误:
    openai.BadRequestError: Error code: 400 - {'error': {'message': "This model's maximum context length is 8192 tokens. However, your messages resulted in 37571 tokens (37332 in the messages, 239 in the functions). Please reduce the length of the messages or functions
    

    我正在研究Python。

    如何摆脱此错误? 有没有一种方法可以在块中发送此数据,因此所有信息都可以发送,但与此同时,所有消息都作为单个消息处理?
  • Fred 7月前 0 只看Ta
    引用 7
    请编辑您的问题并提供更多详细信息。 另外,查看此答案是否有帮助:
  • 我构建一个具有numpy的MLP以近似余弦函数,当损失为平均错误时,它会收敛: 导入numpy作为NP 导入大熊猫作为pd 从matplotlib导入PHPLOT作为PLT 来自Sklearn。

    i构建具有numpy的MLP以近似cosinus函数,当损失是平均错误时,它会收敛:

    import numpy as np 
    import pandas as pd 
    from matplotlib import pyplot as plt
    from sklearn.model_selection import train_test_split
    
    np.random.seed(0)
    
    X_min = -10
    X_max = 10
    X = np.linspace(X_min, X_max, 10_000).reshape(-1, 1)
    y = np.cos(X).reshape(-1, 1)
    X = (X - X_min) / (X_max - X_min) -0.5
    
    # Split dataset into training and testing sets
    
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    
    
    
    class NeuralNetwork:
        def __init__(self, layer_sizes):
            self.layer_sizes = layer_sizes
            self.num_layers = len(layer_sizes)
            self.learning_rate = 0.01
    
            # Initialize weights and biases for all layers except input layer
            self.weights = [np.random.randn(layer_sizes[i-1], layer_sizes[i]) for i in range(1, self.num_layers)]
            self.biases = [np.zeros((1, layer_sizes[i])) for i in range(1, self.num_layers)]
    
        def forward(self, X):
            self.activations = [X]  # Store activations for all layers
            output = X
            for w, b in zip(self.weights, self.biases):
                output = np.dot(output, w) + b
                output = np.tanh(output)  # Activation function (tanh in this case)
                self.activations.append(output)
            self.output = output
    
        def backward(self, X, y):
            m = X.shape[0]
            # Compute gradients
            delta = (self.output - y)**1
            #print(delta.shape)
            moyenne = np.mean(delta)
            delta =  np.repeat(moyenne, m).reshape(-1, 1)
            for i in range(self.num_layers - 1, 0, -1):
                # Compute gradients for weights and biases
                self.weights[i-1] -= self.learning_rate * (1 / m) * np.dot(self.activations[i-1].T, delta)
                self.biases[i-1] -= self.learning_rate * (1 / m) * np.sum(delta, axis=0)
                # Compute delta for previous layer
                delta = np.dot(delta, self.weights[i-1].T) * (1 - np.power(self.activations[i-1], 2))
    
        def train(self, X, y, epochs, batch_size=30):
            num_samples = X.shape[0]
            for epoch in range(epochs):
                for i in range(0, num_samples, batch_size):
                    X_batch = X[i:i+batch_size]
                    y_batch = y[i:i+batch_size]
                    # Forward pass
                    self.forward(X_batch)
                    # Backward pass
                    self.backward(X_batch, y_batch)
                # Print loss every 100 epochs
                if epoch % (N_epochs//10)  == 0:
                    # Use entire dataset for loss calculation
                    self.forward(X)
                    loss = np.mean(np.square(self.output - y))
                    #loss = np.mean((self.output - y))
                    print(f'Epoch {epoch}, Loss: {loss}')
    
    # Example usage:
    layer_sizes = [1, 100,100,100, 1]  # Define layer sizes including input and output layers
    N_epochs = 100
    
    
    model = NeuralNetwork(layer_sizes)
    model.train(X_train, y_train, epochs=N_epochs, batch_size=32)
    
    
    
    # Evaluate the model
    model.forward(X_test)
    test_loss = np.mean(np.square(model.output - y_test))
    print(f'Test Loss: {test_loss}')
    
    X_plot = np.linspace(X_min, X_max, 1000).reshape(-1, 1)
    X_plot_2 = (X_plot - X_min) / (X_max - X_min) - 0.5
    model.forward(X_plot_2)
    plt.plot(np.cos(X_plot))
    plt.plot(model.output)
    

    但是,当delta =(self.output -y)** 2 aka损耗=平方英尺错误

    时,它不会收敛

    我们可以看到可以使用TensorFlow完成收敛:

    import numpy as np
    import tensorflow as tf
    from sklearn.model_selection import train_test_split
    
    np.random.seed(0)
    
    X_min = -10
    X_max = 10
    X = np.linspace(X_min, X_max, 10_000).reshape(-1, 1)
    y = np.cos(X).reshape(-1, 1)
    X = (X - X_min) / (X_max - X_min) - 0.5
    
    
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    
    
    model = tf.keras.Sequential([
        tf.keras.layers.Dense(100, activation='relu', input_shape=(1,)),
        tf.keras.layers.Dense(100, activation='relu'),
        tf.keras.layers.Dense(1)
    ])
    
    
    model.compile(loss='mean_squared_error')
    
    
    model.fit(X_train, y_train, epochs=50, batch_size=32, validation_data=(X_test, y_test), verbose=1)
    

    你能解释我为什么吗?

    是因为来自TensorFlow的优化器吗?

    我试图找到一种不使用TensorFlow的优化器的方法:

    # Define a dummy optimizer that does nothing
    dummy_optimizer = lambda lr: tf.keras.optimizers.Optimizer()
    
    # Compile the model with the dummy optimizer
    model.compile(loss='mean_squared_error', optimizer=dummy_optimizer)
    

    ,但无法实现

  • 我想建立一个代码模式,使我能够做类似于以下内容的事情: #foo具有仅GETER的属性 foo:foo = foorepo.get(id =“ foo_id”) 我想建立一个代码模式,使我可以做类似以下操作的代码模式:
    # Foo has getter-only properties
    foo: Foo = FooRepo.get(id="foo_id")
    assert foo.bar == "original_bar"
    
    # MutableFoo is a window onto the Foo, and when it __exit__s, it persists to the repo
    with foo.mutable() as mutable_foo:
        mutable_foo.bar = "new_bar"
    
    # We've updated the Foo, as well as whatever persistent version the FooRepo owns
    assert foo.bar == "new_bar"
    

    我没有嫁给确切的代码模式。

    我喜欢它:
    • 我们可以将 foo 传递给许多代码领域,只要 mutable() 未调用,我们就可以将其视为不变并忽略持久性的想法。
    • 我们有能力以多种方式将交易性运用到该 上下文manager
    contextManager 之外,我们可以将对象视为快照,这将更普遍,而且越多。
  • 呼叫者在很大程度上可以忽略持久性
  • 我看到的挑战:

    • 需要一种优雅的方式来防止用 块在 之外创建可变版本。
    • 将任何接口与 foo 启用 mutablefoo 同上。
    (您能告诉我我习惯了爪哇吗? 缺少私人会员的内部课程让我有点挠头)
  • 需要一种优雅的错误检查方式。
  • 由于持久性是为了响应退出上下文而发生的,因此有可能发生例外,需要负责任地捕获和处理这些情况。

    人们是否在Python中建立了这种框架?

    您喜欢什么解决方案?
返回
作者最近主题: